wcf入门(11)——设置服务的异常回馈

本文探讨了WCF中单向模式无法直接回馈异常的问题,并提出利用双工模式来实现异常信息的传递。通过添加回调接口,捕获服务端异常并发送给客户端,从而在单向操作中处理异常。同时,文章指出这种方法存在双工模式的限制,适用于已有WCF方案的扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文demo已上传至github:xinyuehtx/WCFdemo

这个博客会介绍如何设置服务的异常回馈


在之前的博客wcf入门(9)——异常处理机制_wcf,c#_黄腾霄的博客-优快云博客wcf入门(10)——异常回馈_wcf,c#_黄腾霄的博客-优快云博客中介绍了wpf提供的2种错误协定回馈异常的方式。

遗憾的是这2中方式都没有办法处理OneWay的情形。

这边博客介绍如何利用我们现有知识针对OneWay的情形回馈异常

回馈单向模式异常

为什么单向模式不能回馈异常

我们在wcf入门(4)——单向模式_wcf,c#_黄腾霄的博客-优快云博客博客中说过,单向模式在调用服务端方法时会立刻返回。

那么当我们抛出异常时,服务端已经不知道该把异常信息回复给谁了。

所以对于单向模式,错误协定无法回馈错误信息。

如何回馈单向模式异常

还记得我们解决单向模式返回值问题的方案么?

没错就是wcf入门(5)——双工模式_wcf,c#_黄腾霄的博客-优快云博客中提到的双工模式

说白了,就是添加一个传递异常信息的回调接口,在发生异常时向这个回调接口发送异常信息

在这里插入图片描述

我们在IFaultCallback接口中添加了一个OnError方法,传递wcf入门(9)——异常处理机制_wcf,c#_黄腾霄的博客-优快云博客中错误协定定义的ServiceFault类型,它包含了方法和异常信息。注意ServiceFault需要能通过数据协定序列化

在这里插入图片描述

实现上catch所有异常,并将异常信息包装成ServiceFault发送给客户端
在这里插入图片描述

最后我们在客户端输出异常信息

在这里插入图片描述

结果如图所示,我们成功获得服务端异常信息

在这里插入图片描述

存在问题

既然是利用双工协定,那么必然需要一些双工协定的必要支持,例如绑定,会话,实例化等选择

这个会在一些期望添加单向模式异常反馈的现有WCF方案造成一些限制

小结

我们研究了WCF服务的单向模式异常反馈,其特点有

  • 利用双工在业务层实现
  • 有双工模式的限制
  • 能处理单向操作

参考链接:


本文会经常更新,请阅读个人博客原文: https://xinyuehtx.github.io/ ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值