Error handling WCF net.tcp服务器断开连接-如何在客户端正确处理?

Error handling WCF net.tcp服务器断开连接-如何在客户端正确处理?,error-handling,silverlight-4.0,wcf-client,nettcpbinding,disconnect,Error Handling,Silverlight 4.0,Wcf Client,Nettcpbinding,Disconnect,我现在遇到了一个令人讨厌的问题。 我有一个Silverlight4应用程序(默认情况下运行OOB)。它使用WCF和net.tcp作为与服务器通信的手段。 客户端使用wcf客户端代理的中心实例。只要一切都在服务器端运行,一切都很好 如果我在所有事情中间杀死服务器,我会陷入客户端(连接丢失、通道故障等)的雪崩异常。 现在,我正在寻找一种干净、集中的方法来处理这个问题(如果可以集中的话) SL应用程序在app.cs(publicstaticmyclient客户机{get;set;})中有一个中央客户机

我现在遇到了一个令人讨厌的问题。 我有一个Silverlight4应用程序(默认情况下运行OOB)。它使用WCF和net.tcp作为与服务器通信的手段。 客户端使用wcf客户端代理的中心实例。只要一切都在服务器端运行,一切都很好

如果我在所有事情中间杀死服务器,我会陷入客户端(连接丢失、通道故障等)的雪崩异常。

现在,我正在寻找一种干净、集中的方法来处理这个问题(如果可以集中的话)

SL应用程序在app.cs(publicstaticmyclient客户机{get;set;})中有一个中央客户机对象,它在应用程序启动时初始化


你知道如何正确处理客户端对象上的任何连接问题吗?

我想我找到了一个可行的解决方案,尽管不是集中式的。它似乎只需要对event.Error属性进行null检查,而不是用try/catch块来混乱代码。如果连接出现问题,则此属性始终不为null。只有尝试访问event.Result时才会引发异常

这可能不是最漂亮的解决方案,但到目前为止似乎是可行的


也许有一种更优雅的方式…

我想我找到了一个可行的——尽管不是集中的——解决方案。它似乎只需要对event.Error属性进行null检查,而不是用try/catch块来混乱代码。如果连接出现问题,则此属性始终不为null。只有尝试访问event.Result时才会引发异常

这可能不是最漂亮的解决方案,但到目前为止似乎是可行的


也许有一种更优雅的方式…

您提到您正在使用WCF客户端代理的中心实例

如果是这种情况,则当发生服务器错误时,代理将进入故障状态。为了使事情集中化,您可以将客户端代理强制转换为
icommuitationobject
,并将事件处理程序附加到
Faulted
事件,该事件将在事件触发时使用新代理替换故障代理


关于集中访问资源的线程安全的常见警告适用

您提到您正在使用WCF客户端代理的中心实例

如果是这种情况,则当发生服务器错误时,代理将进入故障状态。为了使事情集中化,您可以将客户端代理强制转换为
icommuitationobject
,并将事件处理程序附加到
Faulted
事件,该事件将在事件触发时使用新代理替换故障代理


关于集中访问资源的线程安全的常见警告适用

事实上,我刚刚发现了这篇博客文章,它做了这件事:事实上,我刚刚发现了这篇博客文章,它做了这件事: