[筆記][WebAPI] customErrors 導向指定頁面無效問題

以往我們開發Web網頁的系統,在上正式台時,會在Web.Config中設定CustomErrors,讓錯誤發生時導向到我們指定的一個html,不把正確的錯誤訊息或狀態露出。但在WebAPI的時候,卻出現【執行第一個例外狀況的自訂錯誤頁面時發生另一個例外狀況。要求已終止。】的訊息。然後就持續的被賞500,這部分該如何處理,我們繼續看下去

緣起

以往我們開發Web網頁的系統,在上正式台時,會在Web.Config中設定CustomErrors,讓錯誤發生時導向到我們指定的一個html,不把正確的錯誤訊息或狀態露出。但在WebAPI的時候,卻出現【執行第一個例外狀況的自訂錯誤頁面時發生另一個例外狀況。要求已終止。】的訊息。然後就持續的被賞500,這部分該如何處理,我們繼續看下去

 

錯誤訊息:執行第一個例外狀況的自訂錯誤頁面時發生另一個例外狀況。要求已終止

測試的方式,本來的API網址是【http://localhost:1234/api/value】,改為【http://localhost:1234/api/%20/value】,本來預期是,會轉到指定的錯誤畫面,http status是200,但是,卻出現【執行第一個例外狀況的自訂錯誤頁面時發生另一個例外狀況。要求已終止。】,http status回應是【500】。

 

解決方式:【redirectMode="ResponseRewrite"

原本web.config中,的customErrors定如下:


<customErrors defaultRedirect="~/GenericError.htm" mode="On" />

 

只需要補上【redirectMode="ResponseRewrite"】,變為如下,即可正常的運作了


<customErrors redirectMode="ResponseRewrite" defaultRedirect="~/GenericError.htm" mode="On" />

 

特別筆記下來,也提供大家參考

^_^

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6)