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

本篇內(nèi)容主要講解“如何利用WCF實(shí)現(xiàn)將服務(wù)器端的錯(cuò)誤信息返回”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何利用WCF實(shí)現(xiàn)將服務(wù)器端的錯(cuò)誤信息返回”吧!

為江油等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及江油網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、江油網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

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

<behaviors>

<serviceBehaviors>

<behavior name="Bhc">

<serviceMetadata httpGetEnabled="true"/>

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

</behavior>

</serviceBehaviors>

</behaviors>

然后定義承載信息的DataContract

[DataContract]

publicclassErro

{

[DataMember]

publicstringMessage

{

get;set;

}

}

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

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

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

[ServiceContract(SessionMode = SessionMode.Allowed)]//SessionMode = SessionMode.Allowed:設(shè)置此屬性意味著可以使用會(huì)話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.使用自定義的錯(cuò)誤類(lèi)型

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

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

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

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

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

下邊看客戶(hù)端的實(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:這個(gè)抓取的是定義的異常類(lèi)型。

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

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

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

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

到此,相信大家對(duì)“如何利用WCF實(shí)現(xiàn)將服務(wù)器端的錯(cuò)誤信息返回”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文名稱(chēng):如何利用WCF實(shí)現(xiàn)將服務(wù)器端的錯(cuò)誤信息返回
路徑分享:http://muchs.cn/article28/picpcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、搜索引擎優(yōu)化、網(wǎng)站營(yíng)銷(xiāo)、App設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)