這個問題與Handle URI hacking gracefully in ASP.NET有關,因爲它太關於如何最好地處理在ASP.NET請求生命週期中發生的異常。我找到了一種方法來優雅地處理大多數異常,但後來發現在請求中發生了一些異常,因此無法像Server.Transfer
那樣將整個錯誤表示邏輯劃分到它自己的頁面中。如何在ASP.NET請求生命週期中處理異常
因此,我必須處理Application_Error
事件中的異常,而不是Response.Write
和什麼。它很醜。我知道在某些情況下,響應流可能已經被刷新,因此傳輸請求並不是真正的選擇。我想問的是,是否有人找到了解決此問題的優雅解決方案?
此外,我發現很難知道什麼時候可以通過將請求轉移到另一個頁面而不是正常處理異常。發現異常時,找出我們所處的請求生命週期中的哪個位置的最佳方法是什麼?如果它在加載和呈現頁面期間發生,Page_Error
將能夠處理它,並且在那裏我還沒有遇到問題Server.Transfer
。但是,如果Page_Error
發現異常發生時間太早或太遲而無法捕捉到,並且它會冒泡到Application_Error
,我該怎麼做才能知道它是早期還是晚期?
如果它在生命週期的後期,我可能必須直接從Application_Error
做Response.Write
,但如果它提前,我可以做Server.Transfer
。問題是試圖做Server.Transfer
本身會導致一個異常,如果它太請求執行它。
那麼,是否有一個全球性的枚舉或類似的東西,表明是否已經太遲了,以創造性的東西與答覆或不?
嗨,謝謝你的建議。 外部控制檯應用程序不會真的幫助,因爲我想要的不僅是捕捉錯誤(我已經做得很好),而且還顯示友好的錯誤消息。 – 2009-02-27 11:44:57
您使用的是自定義錯誤頁面嗎?這使您可以基於任何基於任何請求結果拋出的Http狀態碼來顯示自定義信息? – 2009-02-27 12:05:15