ASP.NET MVC中的自訂錯誤處理:Global.asax中的Application_Error事件
在ASP.NET MVC應用程式中,Global.asax中的Application_Error事件對於處理未處理例外狀況和提供自訂錯誤頁面至關重要。
將資料傳遞給錯誤控制器
Application_Error事件中的目前程式碼決定HTTP狀態碼並設定RouteData物件以傳遞給Error控制器。但是,該程式碼沒有提供將異常詳細資訊傳遞給控制器的方法。
一種穩健的方法是使用查詢字串參數來傳輸異常訊息。修改後的Application_Error程式碼如下:
<code class="language-csharp">protected void Application_Error(object sender, EventArgs e) { Exception exception = Server.GetLastError(); Response.Clear(); HttpException httpException = exception as HttpException; if (httpException != null) { string action; switch (httpException.GetHttpCode()) { case 404: // 页面未找到 action = "HttpError404"; break; case 500: // 服务器错误 action = "HttpError500"; break; default: action = "General"; break; } // 清除服务器上的错误 Server.ClearError(); Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.Message)); } }</code>
錯誤控制器
錯誤控制器將接收異常訊息作為查詢字串參數:
<code class="language-csharp">// GET: /Error/HttpError404 public ActionResult HttpError404(string message) { return View("SomeView", message); }</code>
注意事項
雖然這種方法允許靈活的異常處理,但請考慮以下幾點:
以上是如何在 ASP.NET MVC 中實現帶有異常詳細資訊的自訂錯誤處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!