加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:24:47 所属栏目:百科 来源:网络整理
导读:我有一个调用外部Web服务的程序,我希望向用户显示一个友好的对话框,例如服务器关闭,有人切断电缆等.假设以下代码 try { client.MyWebService()}catch(? ex){ // display friendly dialog explaining what went wrong} 我应该在代码中代替问号的什么例外?当
我有一个调用外部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代理.它可以为您提供更灵活的处理故障的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读