【发布时间】:2016-04-04 12:57:07
【问题描述】:
我创建了一个使用 NetTCP 绑定的 WCF 服务。
我的服务被客户端访问,保存它的回调通道并在以后使用它来调用客户端(它是一个持久的 tcp 连接)。一切正常,但如果我决定突然终止客户端 - 我会收到一个无法捕获的 SocketException(“现有连接被远程主机强行关闭”)。
我已经尝试过什么?
我已经在每个使用回调通道的方法中添加了 try-catch 子句,甚至在上层 - 启动我的服务的 WCFHost。
-
我尝试同时获取通道和回调通道,并添加一个处理通道故障事件的方法:
var channel = OperationContext.Current.Channel; channel.Faulted += ChannelFaulted; var callbackChannel = OperationContext.Current.GetCallbackChannel<CallbackInterface>(); var comObj = callbackChannel as ICommunicationObject; comObj.Faulted += ChannelFaulted;
简而言之,我正在尝试处理客户端抛出的异常 - 在服务器端。
【问题讨论】:
-
谢谢,但我的问题是我无法捕捉到异常,因此无法中止或关闭频道。我得到一个异常,我可以在我的 Visual Studio 中看到它 - 但它没有链接到代码中的任何行,我的 try-catch 子句都没有捕获它。
-
你能提供更多代码吗?
标签: c# wcf tcp duplex-channel