1

我有一个通过 net.tcp 连接到的双工 WCF 服务。当服务首次启动时,我可以调用它并接收回调,但几分钟后我开始从服务中收到此错误:

传输数据时发生 TCP 错误(995:I/O 操作已因线程退出或应用程序请求而中止)。

我尝试在 IIS 和 Windows 服务中托管该服务,但两者都出现相同的错误。在我的跟踪日志中,我看到异常之前有一个 SocketConnection aborted 警告。

这是什么原因造成的?

我用来跟踪我从这里获得的服务的订阅者的方法。如果需要,我可以发布我的配置,但如果不是,我不想弄乱我的问题。

4

1 回答 1

1

有2个方面:

  1. 为什么发生异常

可能这篇文章可以提供帮助(简而言之 - 在他的情况下 Antivirus 负责错误)

  1. 连接和客户端回调会发生什么 - 未由故障包装的异常将“终止”连接,并且您的客户端将无法重新使用它,它将收到“中止”错误。

您需要在客户端订阅失败的呼叫,然后重新初始化您的连接。

喜欢

((IClientChannel)YourClient).Faulted += InnerChannel_Faulted;
}


void InnerChannel_Faulted(object sender, EventArgs e)
{

    TWLogger.Write("Faulted event ... ");
    reconnect();
} 

另外,我建议使用 Fault 包装所有服务器端异常

于 2013-04-16T18:31:47.660 回答