偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

利用WCF實(shí)現(xiàn)將服務(wù)器端的錯誤信息返回

開發(fā) 后端
默認(rèn)WCF是不允許將服務(wù)器的異常信息返回到客戶端的,那么今天我們將談?wù)勅绾螌?shí)現(xiàn)服務(wù)器端的錯誤信息返回。

  最近在園子里轉(zhuǎn)看到有人對如題的實(shí)現(xiàn)有疑問,今天有時間就寫了項(xiàng)目把實(shí)現(xiàn)簡單的講解一下,如果你是牛逼人物那就繞道吧,哥不想浪費(fèi)你的時間,現(xiàn)在開始:

  默認(rèn)WCF是不允許將服務(wù)器的異常信息返回到客戶端的(主要是客戶端不一定能夠識別clr的異常信息),如果你有這方面的需求可以通過SOAP的Fault包的形式返回異常信息,首先要做的就是設(shè)置配置文件,將默認(rèn)不允許返回錯誤信息的設(shè)置改成如下:

  <behaviors>

  <serviceBehaviors>

  <behavior name="Bhc">

  <serviceMetadata httpGetEnabled="true"/>

  <serviceDebug includeExceptionDetailInFaults="true"/><!--如此設(shè)置會將服務(wù)器端得錯誤返回到客戶端,實(shí)際的發(fā)佈中需要將此項(xiàng)目設(shè)置成false-->

  </behavior>

  </serviceBehaviors>

  </behaviors>

  然后定義承載信息的DataContract

  [DataContract]

  publicclassErro

  {

  [DataMember]

  publicstringMessage

  {

  get;set;

  }

  }

  上邊的代碼 就不用介紹了 就是一個數(shù)據(jù)合同

  //服務(wù)契約定義了可以遠(yuǎn)程調(diào)用的對象和方法//定義服務(wù)契約

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

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

  publicinterfaceIActionMain

  {

  //定義操作契約

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

  [OperationContract]

  stringGetName(stringpInc);

  [FaultContract(typeof(ErroInfo.Erro))]//如果有異常就返回下面定義的數(shù)據(jù)契約的結(jié)構(gòu)數(shù)據(jù)

  [FaultContract(typeof(DivideByZeroException))]

  [OperationContract]

  DataCollection Return();

  }

  在方法中定義屬性,這里有兩種實(shí)現(xiàn)

  1.使用自定義的錯誤類型

  [FaultContract(typeof(ErroInfo.Erro))]//如果有異常就返回下面定義的數(shù)據(jù)契約的結(jié)構(gòu)數(shù)據(jù)

  2.使用系統(tǒng)的異常類型 [FaultContract(typeof(DivideByZeroException))]

  在契約實(shí)現(xiàn)類中將異常拋出

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

  到此服務(wù)器端的實(shí)現(xiàn)完成。

  下邊看客戶端的實(shí)現(xiàn)

  配置文件不需要特殊設(shè)置,調(diào)用函數(shù),抓取異常,代碼如下:

  try

  {

  returnthis.Channel.Return();

  }

  catch(FaultException<ErroInfo.Erro> exception)

  {

  thrownewException(exception.Detail.Message);

  }

  catch(FaultException<DivideByZeroException> exception)

  {

  thrownewException(exception.Detail.Message);

  }

  FaultException<ErroInfo.Erro> exception:這個抓取的是定義的異常類型。

  FaultException<DivideByZeroException> exception:這個抓取的是系統(tǒng)異常類型

  注意這里獲取異常的信息的方法是exception.Detail.Message,而不是Message。

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

【編輯推薦】

  1. 5月***超有趣的免費(fèi)jQuery插件推薦
  2. 從零開始學(xué)習(xí)jQuery之管理jQuery包裝集
  3. jQuery性能指標(biāo)和調(diào)優(yōu)
  4. 手把手教你jQuery jqPlot畫圖插件
  5. 從零開始學(xué)習(xí)jQuery之***的選擇器
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2012-12-27 15:36:19

Android開發(fā)錯誤處理

2011-02-21 13:41:20

Postfix問題錯誤

2024-09-03 16:38:11

2010-03-10 14:34:52

Python異常處理

2013-12-25 11:01:16

JavaScript

2012-10-15 13:40:15

IBMdw

2014-01-15 10:06:30

vFlash

2009-04-20 09:09:46

PHP錯誤信息錯誤代碼

2023-08-27 08:57:31

2023-10-27 11:27:28

2010-08-27 10:23:26

DHCP服務(wù)器

2015-10-27 09:40:31

TCPIP網(wǎng)絡(luò)協(xié)議

2014-11-14 11:03:56

微軟.NET

2023-06-30 08:00:00

漏洞網(wǎng)絡(luò)安全SSTI

2011-06-07 16:01:46

Android 服務(wù)器 數(shù)據(jù)交互

2017-12-06 22:29:53

2015-11-04 14:14:56

HTTP網(wǎng)絡(luò)協(xié)議

2023-11-27 00:39:46

2024-04-29 14:45:20

ChatGPT

2017-10-10 14:38:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號