C# 如何排除故障:wcf应用程序停止通过命名管道接收数据?

C# 如何排除故障:wcf应用程序停止通过命名管道接收数据?,c#,wcf,C#,Wcf,我有一个UI WPF应用程序,它显示从WCF命名管道接收的数据。 经过一段时间(约30分钟)数据冻结(但重启后一切正常)。 不显示任何错误。 用户界面负责。 如何解决这个问题?也许我应该用“try/catch”来监视整个应用程序,并在messagebox中显示任何异常?默认情况下,wcf是为短期会话配置的。您必须将NetNamedPipeBinding的ReceiveTimeout设置为TimeSpan.MaxValue,才能解除此行为。 这应该可以解决这个问题,不管怎样,最好在通道的故障、关闭

我有一个UI WPF应用程序,它显示从WCF命名管道接收的数据。 经过一段时间(约30分钟)数据冻结(但重启后一切正常)。 不显示任何错误。 用户界面负责。
如何解决这个问题?也许我应该用“try/catch”来监视整个应用程序,并在messagebox中显示任何异常?

默认情况下,wcf是为短期会话配置的。您必须将NetNamedPipeBinding的ReceiveTimeout设置为TimeSpan.MaxValue,才能解除此行为。

这应该可以解决这个问题,不管怎样,最好在通道的故障、关闭、。。。事件来了解正在发生的事情。(您必须将频道强制转换到ICommunicationObject)。因为如果wcf出现任何问题,您唯一的解决方案是创建一个新通道(不可能从故障或关闭状态返回到打开状态)。

服务器是否响应请求?重新启动客户端后,一切正常,因此我假设是,服务器有效您尝试过wireshark吗?不,但网络不受欢迎。一切都是本地的。wireshark能否分析本地命名管道?我认为
将NetNamedPipeBinding设置为TimeSpan。MaxValue
无法解决此问题,因为这只属于“非活动”会话。在我的例子中,会话是非常活跃的。如何
将处理程序添加到您的通道的故障、关闭的。。。事件
?对于TimeSpan-->无论如何都可以尝试,它不会造成伤害;-)对于处理程序,我的语言是vb,但是通过强制转换()获取与频道add关联的ICommunicationObject使用MyICommunicationObject.Faulted+=new System.EventHandler(this.MyFaultedHandler),其中MyFaultedHandler是具有正确签名的函数:(Object sender,System.EventArgs e)。