2009-09-06 47 views
0

我正在嘗試做一個測試Web服務並拋出一個SoapException。但是,當我通過瀏覽器打開服務,它顯示內部服務器錯誤 - 500.在ASP.NET客戶端中顯示webservice soapexception響應

如果我嘗試通過手動創建的SoapRequest(在stringbuilder中)手動使用它,我得到同樣的錯誤「Servererror - 500」 Visual Studio本身在線「WebResponse response = req.GetResponse()

是否有反正我實際上可以看到「錯誤響應XML」。

回答

-1

5-6小時上網通過後終於得到了它......這就是:

當你手動得到響應,使用以下命令:

try 
{ 
    WebResponse response = req.GetResponse();     
    Stream str = response.GetResponseStream(); 
    StreamReader rdr = new StreamReader(str); 
    Response.Write(rdr.ReadToEnd());   
    Response.End(); 
} 
catch (WebException webEx) 
{ 
    Stream str = webEx.Response.GetResponseStream(); 
    StreamReader rdr = new StreamReader(str); 
    Response.Write(rdr.ReadToEnd());   
    Response.End(); 
} 
2

聽起來好像服務有問題,你需要在服務器端而不是客戶端進行調試。我得出這個結論是因爲您的客戶端代碼和Web瀏覽器存在問題。

假設你使用的.NET是否啓用了服務器上的ASP.NET錯誤顯示?有關信息,請參閱this article

更新:

所以,你在服務器上拋出一個錯誤,並希望在客戶端上的錯誤文本?服務器上的錯誤應該導致500錯誤消息,並且不太可能將任何XML返回給客戶端。也許你可以傳遞一些東西給SoapException構造函數?您是否看過docs for SoapException?他們有一些使用SoapException的Detail屬性傳遞信息的例子。

+0

服務器代碼只是 [WebMethod] public void GetSoapException() { throw new SoapException(); } 所以不存在錯誤的可能性。 – Subhasis 2009-09-06 18:33:09

+0

正確...我可以傳遞一些東西給SoapException構造函數(事實上我已經試過了),但最後我需要拋出異常......我錯了嗎? 拋出異常總是會導致「服務器錯誤 - 500」?如果是這樣,我怎麼能得到XML中的錯誤。 – Subhasis 2009-09-06 18:54:58

0

你能在瀏覽器中看到asmx(假設你正在使用asmx)嗎?

+0

沒有它不工作,如果我直接從IE打開asmx並調用方法,我得到的下一個屏幕是「HTTP 500內部服務器錯誤」 – Subhasis 2009-09-06 18:34:15