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

來源:互聯網
上載者:User

用戶端的異常處理這個部分,我們將看看在用戶端怎樣處理從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服務中的異常提供了一個堅實的基礎.
(出處:PConline)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.