2008-10-14 80 views
3

ASP.NET ASMX服務偶爾會拋出異常。但是,global.asax Application_Error方法似乎無法捕獲它們。問題是,如何配置全局錯誤處理程序來捕獲和記錄這些異常?如何處理asmx服務拋出的異常?

+0

您是否嘗試過使用WebMethods中的try/catch? – Kon 2008-10-14 13:20:20

回答

0

它是拋出異常的ASMX或AJAX JavaScript嗎?

如果是Javascript,則需要將異常處理寫入JS中,然後將其推回到服務器以便在錯誤數據存儲中進行跟蹤 - 可能需要通過對您的web服務的另一個調用。

如果它是ASMX,那麼它可能會被Application_Error捕獲,但是由於ASMX返回XML或JSON,它不一定會顯示在您的UI上,除非您正在查找它。

0

客戶端我會簡單地將您的調用打包到JavaScript中的服務中。 在服務器端,應將錯誤記錄爲服務器日誌。 http 500錯誤

2

ASMX web服務的基本問題(這不是問題)是服務層後面的任何異常作爲SOAP異常拋出給客戶端。您需要捕獲SOAP異常,然後在那裏查找內部異常。

更好和乾淨的方法是在應用程序中實現SOAP處理程序。通過這個序列化SOAP異常並在客戶端反序列化它。這樣你就可以完全控制異常流程,而不是.net框架。

HTH

+0

你能指出我對這個方向正確嗎?我目前正在嘗試創建一個全局異常處理程序,它不允許任何異常在asmx文件之外進行傳播(而不是使用自定義有效內容對象來表示錯誤)。輸出實際上是JSON而不是SOAP,但是因爲我沒有經驗覆蓋這部分的asp.net基礎結構,所以任何可以指向我的東西都將非常有幫助。 – Fred 2014-07-03 23:57:39