c# – WCF Web服务调用 – 要捕获的异常?

我有一个调用外部Web服务的程序,我希望向用户显示一个友好的对话框,例如服务器关闭,有人切断电缆等.假设以下代码
try {
   client.MyWebService()
}
catch(? ex)
{
   // display friendly dialog explaining what went wrong
}

我应该在代码中代替问号的什么例外?当一切工作顺利并且我无法控制外部部件时,很难真正测试这样的情况,因此有些见解会受到赞赏.

谢谢!

解决方法

首先要做的是利用代理上的.Fululted事件,你可以这样连接:
((ICommunicationObject)client).Faulted += new EventHandler(client_Faulted);

在client_Faulted事件处理程序中,您可以尝试重新连接,或转移到备份服务器,或禁用UI,记录错误或在那里显示消息.

将try-catch中的每个调用包装起来显然仍然是一个好习惯,但是.Faulted事件可以让你更早地处理大多数通道问题.

至于异常本身,您可以让您的服务抛出一个FaultException,它会通过您提供的详细信息传递回客户端.请参阅this blog posting的使用示例.

如果通道本身发生故障,您将不会获得FaultException(FaultException是服务器将其自身内部故障传达给客户端的一种方式).

对于通道故障,您可能会收到CommunicationException或TimeoutException.

最后,看看Codeplex上的this project,以生成异常处理WCF代理.它可以为您提供更灵活的处理故障的方法.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...