博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF实现将服务器端的错误信息返回到客户端
阅读量:7237 次
发布时间:2019-06-29

本文共 1825 字,大约阅读时间需要 6 分钟。

最近在园子里转看到有人对如题的实现有疑问,今天有时间就写了项目把实现简单的讲解一下,如果你是牛逼人物那就绕道吧,哥不想浪费你的时间,现在开始:

默认WCF是不允许将服务器的异常信息返回到客户端的(主要是客户端不一定能够识别clr的异常信息),如果你有这方面的需求可以通过SOAP的Fault包的形式返回异常信息,首先要做的就是设置配置文件,将默认不允许返回错误信息的设置改成如下:

然后定义承载信息的DataContract

[DataContract] public class Erro     {
[DataMember] public string Message {
get; set; } }

上边的代码 就不用介绍了 就是一个数据合同

//服務契約定義了可以遠程調用的對象和方法 //定義服務契約     [XmlSerializerFormat]//定義序列化的方式     [ServiceContract(SessionMode = SessionMode.Allowed)]//SessionMode = SessionMode.Allowed:設置此屬性意味著可以使用會話Binding     public interface IActionMain     {
//定義操作契約 [DataContractFormat]//定義序列化的方式 [OperationContract] string GetName(string pInc); [FaultContract(typeof(ErroInfo.Erro))]//如果有異常就返回下面定義的數據契約的結構數據 [FaultContract(typeof(DivideByZeroException))] [OperationContract] DataCollection Return(); }

在方法中定义属性,这里有两种实现

1.使用自定义的错误类型

        [FaultContract(typeof(ErroInfo.Erro))]//如果有異常就返回下面定義的數據契約的結構數據

2.使用系统的异常类型

        [FaultContract(typeof(DivideByZeroException))]
在契约实现类中将异常抛出

throw new FaultException
(new DivideByZeroException("這個是自定義的異常!"));

到此服务器端的实现完成。

下边看客户端的实现

配置文件不需要特殊设置,调用函数,抓取异常,代码如下:

try             {
return this.Channel.Return(); } catch (FaultException
exception) {
throw new Exception(exception.Detail.Message); } catch(FaultException
exception) {
throw new Exception(exception.Detail.Message); }

 

FaultException<ErroInfo.Erro> exception:这个抓取的是定义的异常类型。

FaultException<DivideByZeroException> exception:这个抓取的是系统异常类型

注意这里获取异常的信息的方法是exception.Detail.Message,而不是Message。

运行效果如下:

 

示例代码:

转载于:https://www.cnblogs.com/Ref-tian/archive/2011/12/21/2295602.html

你可能感兴趣的文章
Myisam和innodb 和memory的区别
查看>>
.Net 特性 attribute 学习 ----自定义特性
查看>>
vue如何加入百度联盟广告
查看>>
react中实现搜索结果中关键词高亮显示
查看>>
JQuery的过滤选择器
查看>>
C# Http POST get
查看>>
sql server 常用脚本
查看>>
88. Merge Sorted Array
查看>>
node(一)安装nodejs最新版到debian,ubuntu,mint系统
查看>>
java 多线程学习笔记
查看>>
Win10下python3和python2同时安装并解决pip共存问题
查看>>
策略模式(Strategy Pattern)
查看>>
CQRS微服务架构模式
查看>>
对某***网站的一次快速处理
查看>>
《Android开发案例驱动教程》云端应用整篇下载
查看>>
30分钟zabbix入门——最简单有效的zabbix快速学习法
查看>>
2012年第一篇博文——致谢:2011年中国IT十大杰出博客获奖感言
查看>>
蔡文胜谈美链:BEC没有任何割韭菜的行为
查看>>
Android、iOS和Windows Phone中的推送技术
查看>>
DELL软件:像胶水一样具有黏性
查看>>