2009-12-06 44 views
2

我號召web服務的方法,它是扔一個403禁止引發WebException ...如何獲取拋出WebException的URI?

System.Net.WebException: 故宮:請求 ,HTTP狀態403失敗。

我有這個錯誤記錄,但我真的很想記錄在日誌消息的URI,所以很容易確定哪個webservice導致問題。

是否有一種簡單的方法從引發的WebException中獲取URI?我查看了屬性列表,我看不到任何會讓我想要的東西。

+1

你不應該使用URI來撥打電話嗎? – mauris 2009-12-06 23:27:49

+0

我的方法使用了兩個Web服務,它們都可以拋出WebException ....因此,我想從異常中訪問URI ... – mezoid 2009-12-06 23:30:49

+0

因此,您在自己的內部調用了2個webservice方法網絡服務? – 2009-12-06 23:33:36

回答

1

您可以訪問SOAP客戶端代理對象(SoapHttpClientProtocol類型)上的Url屬性。

如果您在代碼中使用一種方法調用兩種不同的Web服務,只需嘗試一下{},以捕捉Web服務調用,並使用有問題的Web服務的Url屬性引發相應的自定義Exception

喜歡的東西:

string url = client.Url; 
try 
{ 
    client.MyWebServiceCall(); 
    url = client2.Url; 
    client2.MyWebServiceCall2(); 
} 
catch (Exception ex) 
{ 
    throw new Exception("Webservice call failed. Url: "+url+", Error:"+ex.Message,ex); 
} 
+0

我正在將此標記爲答案,因爲我沒有意識到webservice有權訪問Url屬性...並且由於我的代碼在Web服務周圍沒有複製Url的包裝,所以我無法訪問它。我已經更改了我的代碼,以便在包裝的web服務上提供Url,並確保我的try-catch只在一個服務調用周圍。 – mezoid 2009-12-07 02:36:26

0

可以肯定你是不是做了呼叫服務通過一個需要認證的webproxy。你會得到這個(或者可能是401)的錯誤,並把你的頭髮拉出來(像我一樣)試圖找出失敗發生的地方。我沒有意識到發生了什麼情況,直到我進行了網絡跟蹤,發現請求正在打到我們的出站身份驗證代理,並且該請求沒有憑據,並且被退回。

相關問題