国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 服務(wù)器 > Web服務(wù)器 > 正文

Web服務(wù)中的異常處理(4)

2024-09-01 13:47:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

客戶端的異常處理這個(gè)部分,我們將看看在客戶端怎樣處理從Web服務(wù)中所拋出的異常。為了說(shuō)明這個(gè)做法,我們來(lái)創(chuàng)建一個(gè)新項(xiàng)目CategoriesServiceClient。一旦項(xiàng)目被創(chuàng)建,就在默認(rèn)的表單上添加一個(gè)命令按鈕,并命名為btnInvoke。因?yàn)樾枰诳蛻舳艘肳eb服務(wù),所以在項(xiàng)目CategoriesService中添加一個(gè)WebReference。可以通過(guò)Project->AddReference菜單選項(xiàng)來(lái)完成添加。然后修改命令按鈕的Click事件,如下所示。

privatevoidbtnInvoke_Click(objectsender,System.EventArgse)

{

try

{

Categoriescat=newCategories();

MessageBox.Show(cat.AddCategories("XmlNamespaceManagernsManager=new

XmlNamespaceManager(doc.NameTable);

//AddthenamespacetotheNamespaceManager

nsManager.AddNamespace("errorNS",

"http://tempuri.org/CategoriesService");

XmlNodecategoryNode=

doc.DocumentElement.SelectSingleNode("errorNS:Error",

nsManager);

stringerrorNumber=

categoryNode.SelectSingleNode("errorNS:ErrorNumber",

nsManager).InnerText;

stringerrorMessage=
categoryNode.SelectSingleNode("errorNS:ErrorMessage",

nsManager).InnerText;

stringerrorSource=

categoryNode.SelectSingleNode("errorNS:ErrorSource",

nsManager).InnerText;

MessageBox.Show("ErrorNumberis"+errorNumber);

MessageBox.Show("ErrorMessageis"+errorMessage);

MessageBox.Show("ErrorSourceis"+errorSource);

}catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

客戶端需要處理Web服務(wù)所產(chǎn)生的異常。因?yàn)閃eb服務(wù)所產(chǎn)生的異常都是SoapException形式的,所以調(diào)用Web服務(wù)的客戶應(yīng)用程序的代碼應(yīng)該被包含在try...catch塊中,并且第一個(gè)catch塊應(yīng)該具有捕捉SoapException的處理器。讓我們大致看看以上所示的代碼。

首先創(chuàng)建一個(gè)Categories類的實(shí)例。然后傳入所要求的XML字符串參數(shù),調(diào)用Categories類的AddCategories方法。再后,我們讓catch塊處理Web服務(wù)所產(chǎn)生的異常。在這個(gè)代碼塊中,我們以消息提示框的方式顯示異常的產(chǎn)生者。我們通過(guò)使用SoapException對(duì)象的Code屬性來(lái)完成這個(gè)顯示。如果異常是因?yàn)榭蛻舳说姆欠ㄝ斎攵a(chǎn)生的,那么Code屬性被設(shè)置為Client。如果異常是因?yàn)閃eb服務(wù)代碼(例如,據(jù)庫(kù)服務(wù)器已經(jīng)關(guān)閉)而產(chǎn)生的,則Code屬性被設(shè)為Server。

然后,我們把包含在SoapException對(duì)象的Detail元素中的XML數(shù)據(jù)導(dǎo)入到一個(gè)XmlDocument對(duì)象中。類似于Web服務(wù)的代碼,這里同樣利用XmlNamespaceManager對(duì)象把命名空間與XmlDocument對(duì)象關(guān)聯(lián)在一起。之后,取出包含在不同元素中的值,并把它們賦給本地變量。最后,使用消息提示框顯示本地變量的值。把它放在一起

至此,我們已經(jīng)完成了客戶應(yīng)用程序,現(xiàn)在讓我們運(yùn)行測(cè)試它。如果運(yùn)行客戶程序,它將顯示一個(gè)消息框(具有true值),那么則表明categories詳細(xì)信息已經(jīng)成功保存到數(shù)據(jù)庫(kù)中。現(xiàn)在,從輸入的XML數(shù)據(jù)中刪除元素,運(yùn)行客戶程序。將會(huì)得到一個(gè)消息,表明異常的原因是客戶程序,除此之外,還可以在SoapException對(duì)象中得到更多的異常信息。

正如前面所提到的那樣,如果Web服務(wù)失敗是由于服務(wù)器端的一些問(wèn)題引起的,那么SoapException對(duì)象的Code屬性應(yīng)該被設(shè)置為Server。為了測(cè)試這個(gè),修改Web服務(wù)中的連接字符串為一個(gè)無(wú)效值。現(xiàn)在,如果運(yùn)行客戶程序,將會(huì)得到一個(gè)表明異常的原因是Server的消息(該例中的Web服務(wù))。

結(jié)論

本文中,我們已經(jīng)了解到怎樣使用SoapException對(duì)象來(lái)處理和傳遞異常給Web服務(wù)的客戶端。我們還了解到SoapException對(duì)象是怎樣利用SOAPfault編碼(定義在SOAP規(guī)范中)來(lái)傳遞異常的。順便,我們還討論了處理客戶端所產(chǎn)生的異常的步驟。雖然我們創(chuàng)建的應(yīng)用的功能非常的簡(jiǎn)單,但是它給我們理解怎樣拋出和處理Web服務(wù)中的異常提供了一個(gè)堅(jiān)實(shí)的基礎(chǔ).
(出處:PConline)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 慈利县| 桃江县| 金坛市| 将乐县| 吐鲁番市| 新绛县| 德格县| 博野县| 新乡县| 理塘县| 鹤庆县| 永平县| 隆安县| 衡山县| 山丹县| 伊吾县| 汝阳县| 泰和县| 尤溪县| 新津县| 芜湖市| 盈江县| 吴忠市| 烟台市| 九龙县| 彭水| 新沂市| 潜山县| 航空| 乌什县| 赫章县| 贵阳市| 启东市| 博湖县| 甘孜县| 嘉祥县| 武清区| 芜湖县| 榆树市| 和林格尔县| 中牟县|