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

前端之家收集整理的这篇文章主要介绍了c# – WCF Web服务调用 – 要捕获的异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个调用外部Web服务的程序,我希望向用户显示一个友好的对话框,例如服务器关闭,有人切断电缆等.假设以下代码
try {
   client.MyWebService()
}
catch(? ex)
{
   // display friendly dialog explaining what went wrong
}
@H_502_4@我应该在代码中代替问号的什么例外?当一切工作顺利并且我无法控制外部部件时,很难真正测试这样的情况,因此有些见解会受到赞赏.

@H_502_4@谢谢!

解决方法

首先要做的是利用代理上的.Fululted事件,你可以这样连接:
((ICommunicationObject)client).Faulted += new EventHandler(client_Faulted);
@H_502_4@在client_Faulted事件处理程序中,您可以尝试重新连接,或转移到备份服务器,或禁用UI,记录错误或在那里显示消息.

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

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

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

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

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

原文链接:https://www.f2er.com/csharp/243473.html

猜你在找的C#相关文章