使用TdDataAdapter.Fill()(Teradata DataAdapter)填充DataTable时出现System.Net.Sockets.SocketException异常

3
我看到其他人报告了“System.Net.Sockets.SocketException”异常,但它们大多涉及 Web 服务。我们没有调用任何 Web 服务。实际上,这个 ASP.NET 应用程序是一个单层应用程序,UI 和数据层都包含在一个程序集中。为了检索数据,我们手动打开连接、创建命令并执行读取器或使用数据适配器填充数据表,然后将其传递给页面。
每个月有几次尝试执行命令时,我们会收到 “System.Net.Sockets.SocketException” 异常。我不知道是什么原因导致的。如主题所述,我们正在访问 Teradata 数据库,因此我们使用 TdConnection、TdCommand 和 TdDataAdapter。
cmdSolutionName = New TdCommand(sSql, Con)
daSolutionName.SelectCommand = cmdSolutionName
daSolutionName.Fill(tmpTable) 'Exception is thrown here

有人知道在直接使用数据库连接而不是 Web 服务时,什么原因会导致这个异常吗?

1个回答

3
我在工作中使用 .Net Remoting 连接到另一台主机时,遇到了同样的错误。 .Net Remoting 使用 TCP\IP 协议,我相信 TdCommand 也使用此协议。 我发现问题的根源是一个名为“趋势科技”的进程,它是一款杀毒软件,会劫持端口 8080 上的所有实时套接字。 也许你的杀毒软件正在进行“月经期”的扫描并关闭所有通信。 如果不是这个原因,请考虑其他可能有害的进程。

非常有趣的发现。我们本地的开发机器上安装了趋势科技(Trend Micro)。生产环境中有一个名为Trend ServerProtect的运行服务,它是由趋势科技开发的。显然,我无法在服务器上自己重新配置它,但您有任何想法如何重新配置它,以便阻止这种潜在的劫持行为吗? - oscilatingcretin
这是“趋势科技”软件的一个漏洞,我已经要求我的IT团队与“趋势科技”的POC合作解决。您可以尝试使用他们的服务。目前,为了确保安全,您可以卸载或禁用扫描功能,看看是否还会出现“SocketException”。 - Boolean
由于缺乏其他答案/意见,我会给你答案和赏金。我发现你提到趋势科技(Trend Micro)很巧合,因为这正是我们使用的,所以如果我找到更多相关信息,我会提出更多细节。 - oscilatingcretin
我建议你在应用程序崩溃并出现“SocketException”时使用以下命令行: netstat -aon 打开任务管理器的进程选项卡,添加“PID”列并在任务管理器中搜索“Trend Micro” PID, 然后查找此PID在命令行输出中的通信情况。 这就是我发现“劫持”套接字的方法。 - Boolean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接