2011-06-16 41 views
1

我有一個WCF數據服務,它正在通過WebClient調用ServiceOperation(ServiceOperation返回非實體數據,所以我必須解析XML結果來自WebClient)。撥打電話的代碼看起來像這樣(我已經移除代碼中的一些敏感信息):WebClient調用WCF數據服務正在刪除特定的異常消息

WebClient wc = new WebClient(); 
string requestXMLresult = wc.DownloadString(new Uri(string.Format("http://localhost:49370/DataService.svc/ServiceOperationName?<params, etc>"))); 
XDocument xdoc = XDocument.Parse(requestXMLresult); 
// <etc> 

在(例如)認證,我的服務可以拋出這樣的DataServiceException:

throw new DataServiceException(401, "The specified user did not have permissions to any resources."); 

問題是,在客戶端,當異常回來時,我將失去額外的文本。我得到的實際例外是「(401)未經授權」,就是這樣。我檢查了InnerException,異常消息等,它似乎丟失了。

有沒有辦法通過WebClient連接保留該消息?我不確定這是一個WCF數據服務問題,還是一般問題,通過WebClient連接拋出異常(我懷疑後者,但我很新)。

任何幫助非常感謝!

回答

0

我不認爲你可以這樣做,因爲401是標準消息的標準HTTP錯誤代碼。

如果您使用自己的文本返回200,那可能會起作用,但4 *或5 *代碼中的任何一個都只會保留標準消息。

+0

是的,經過進一步的探索,我認爲你是對的。我最終走向了另一個方向,所以現在異常處理方式不同。感謝Roy! – Egahn 2011-06-24 17:10:40