利用WCF实现将服务器端的错误信息返回

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

创新互联专注于和平企业网站建设,响应式网站,商城系统网站开发。和平网站建设公司,为和平等地区提供建站服务。全流程定制网站开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

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

  

  

  

  

  

  

  

  

  然后定义承载信息的DataContract

  [DataContract]

  publicclassErro

  {

  [DataMember]

  publicstringMessage

  {

  get;set;

  }

  }

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

  //服務契約定義了可以遠程調用的對象和方法//定義服務契約

  [XmlSerializerFormat]//定義序列化的方式

  [ServiceContract(SessionMode = SessionMode.Allowed)]//SessionMode = SessionMode.Allowed:設置此屬性意味著可以使用會話Binding

  publicinterfaceIActionMain

  {

  //定義操作契約

  [DataContractFormat]//定義序列化的方式

  [OperationContract]

  stringGetName(stringpInc);

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

  [FaultContract(typeof(DivideByZeroException))]

  [OperationContract]

  DataCollection Return();

  }

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

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

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

  2.使用系统的异常类型 [FaultContract(typeof(DivideByZeroException))]

  在契约实现类中将异常抛出

  thrownewFaultException(newDivideByZeroException("這個是自定義的異常!"));

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

  下边看客户端的实现

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

  try

  {

  returnthis.Channel.Return();

  }

  catch(FaultException exception)

  {

  thrownewException(exception.Detail.Message);

  }

  catch(FaultException exception)

  {

  thrownewException(exception.Detail.Message);

  }

  FaultException exception:这个抓取的是定义的异常类型。

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

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

原文链接:http://www.cnblogs.com/Ref-tian/archive/2011/12/21/2295602.html

本文题目:利用WCF实现将服务器端的错误信息返回
本文路径:http://www.gawzjz.com/qtweb/news31/161131.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联