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

首頁 > 網站 > 建站經驗 > 正文

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

2019-11-02 16:58:18
字體:
來源:轉載
供稿:網友

客戶端的異常處理這個部分,我們將看看在客戶端怎樣處理從Web服務中所拋出的異常。為了說明這個做法,我們來創建一個新項目CategoriesServiceClient。一旦項目被創建,就在默認的表單上添加一個命令按鈕,并命名為btnInvoke。因為需要在客戶端引用Web服務,所以在項目CategoriesService中添加一個WebReference。可以通過Project->AddReference菜單選項來完成添加。然后修改命令按鈕的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服務所產生的異常。因為Web服務所產生的異常都是SoapException形式的,所以調用Web服務的客戶應用程序的代碼應該被包含在try...catch塊中,并且第一個catch塊應該具有捕捉SoapException的處理器。讓我們大致看看以上所示的代碼。

首先創建一個Categories類的實例。然后傳入所要求的XML字符串參數,調用Categories類的AddCategories方法。再后,我們讓catch塊處理Web服務所產生的異常。在這個代碼塊中,我們以消息提示框的方式顯示異常的產生者。我們通過使用SoapException對象的Code屬性來完成這個顯示。如果異常是因為客戶端的非法輸入而產生的,那么Code屬性被設置為Client。如果異常是因為Web服務代碼(例如,據庫服務器已經關閉)而產生的,則Code屬性被設為Server。

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

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

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

結論

本文中,我們已經了解到怎樣使用SoapException對象來處理和傳遞異常給Web服務的客戶端。我們還了解到SoapException對象是怎樣利用SOAPfault編碼(定義在SOAP規范中)來傳遞異常的。順便,我們還討論了處理客戶端所產生的異常的步驟。雖然我們創建的應用的功能非常的簡單,但是它給我們理解怎樣拋出和處理Web服務中的異常提供了一個堅實的基礎.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南漳县| 开鲁县| 天台县| 崇仁县| 宜城市| 嘉黎县| 桑植县| 隆化县| 铅山县| 沂源县| 琼海市| 洱源县| 霍山县| 泌阳县| 古交市| 同心县| 沅陵县| 海安县| 潼关县| 东明县| 满洲里市| 时尚| 宁晋县| 平罗县| 天台县| 都昌县| 宾川县| 灵石县| 漠河县| 鸡西市| 靖宇县| 武乡县| 石景山区| 专栏| 大悟县| 江安县| 喀喇| 涿鹿县| 黑山县| 莱州市| 平果县|