2015年7月14日 星期二

[ASP.NET] 無法在 Client端顯示詳細的 Exception,出現「處理此要求時發生錯誤」

遇到了類似〈Getting Exception Details from ASP.NET PageMethods on the Client SIde〉這篇的情況。

問題:

  • 欲透過 JavaScript的 PageMethods,進行後端處理。
  • 後端出現錯誤時,想拋出(詳細的自訂) exception時,本機及 Server端可正常顯示;但 Client端一律看到的是「處理此要求時發生錯誤」的字句。


答案是眉眉角角的設定值。

需在 Web.config內的<system.web>標籤之間,將 customErrors的 mode設為 Off , e.g. <customErrors mode="Off" />


如下:
<system.web>
...
 ...
<customErrors mode="Off" />
</system.web>

到 MSDN看 customErrors 項目可發現,預設值為 RemoteOnly。實際測試發現,本機可見「詳細的 ASP.NET 錯誤」(例如我們自訂的 Exception字句);但 Client端只能見到「處理此要求時發生錯誤」的字眼。

若將 customErrors的 mode設為 On(未指定 defaultRedirect),本機與 Client端只能見到「處理此要求時發生錯誤」。

若想在錯誤發生時導向其他網頁的話,請參考〈ASP.NET Web 組態設定方針〉的自訂錯誤區塊,底下為該網頁的範例。
<customErrors mode="RemoteOnly"  
    defaultRedirect="GenericErrorPage.htm">
  <error statusCode="403" redirect="NoAccess.htm" />
  <error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>


沒有留言:

張貼留言