2010-01-11 67 views
1

我有一個基於WCF的測試集客戶端用於一組Web服務。測試客戶端允許我查看原始請求和來自服務的響應。 Message Inspector端點行爲用於「拾取」原始請求和響應消息,並將其保存以供以後在UI中顯示。當服務器返回HTTP 401時,如何獲取WCF FaultException?

這很好,除了傳遞無效憑據的用例外。服務器返回一個HTTP 401以及包含發生事件細節的SOAP錯誤。這傷害了我的幾種方法:

  1. 在客戶端這顯示爲一個MessageSecurityException不是FaultException,所以我不能從故障的細節。
  2. 這個異常似乎阻止我的消息檢查器上的AfterReceiveReply事件處理程序被觸發,所以我無法訪問原始響應。

有沒有什麼辦法,使SOAP錯誤來通過爲FaultException類型,讓我的消息檢查處理的響應,無論返回的HTTP狀態代碼,我可以處理這種情況?

謝謝!

+0

您在服務器端使用哪種類型的身份驗證?客戶端如何傳遞憑據? –

+0

服務器端的基本身份驗證。通過手動創建HTTP標頭來傳遞信譽,如此處所述== http://forums.silverlight.net/forums/t/18729.aspx – WayneC

回答

1

你不能。如果.NET異常發生服務器端代碼並​​且已被捕獲,則只會得到FaultException

HTTP 401「在未經授權的訪問」 - 你會得到例外之前,你甚至到達服務器代碼 - >這將永遠是一個MessageSecurityException - 從來沒有一個FaultException(有沒有辦法神奇地把它轉換成一個FaultException,或者)。

在執行甚至到達服務器代碼之前發生的任何異常(例如EndpointNotFoundExceptionTimeoutException)絕不是故障異常。

但是,所有WCF特定異常都來自公共基類,但是 - CommunicationException。所以也許你可以把它作爲後備。

+0

感謝您的回覆。更多的細節....如果你看看原始響應,使用soapUI或類似的工具,服務返回401和SOAP錯誤。所以,信息就在那裏,我只是無法得到它,因爲我的消息檢查器從來沒有因MessageSecurityException引發。任何其他方式來獲得原始迴應? – WayneC

相關問題