在ASP.NET MVC中使用Global.asax的Application_Error事件實作自訂錯誤處理
ASP.NET MVC中的Global.asax檔案裡的Application_Error事件允許開發者處理應用程式中未處理的例外狀況和錯誤。常見的做法是根據錯誤的HTTP狀態碼將使用者重新導向到特定的錯誤頁面。
為此,您可以修改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>
在這個改進的程式碼中,我們直接重定向到控制器/操作,並將錯誤詳細資訊作為查詢字串參數傳遞,而不是為錯誤控制器建立新的路由。然後,Error控制器將接收訊息並使用操作方法中指定的視圖顯示它。
<code class="language-csharp">// GET: /Error/HttpError404 public ActionResult HttpError404(string message) { return View("SomeErrorView", message); }</code>
這種方法簡化了錯誤處理過程,並避免了需要額外的路由。但是,需要注意權衡,例如,如果在錯誤處理期間存在大量的循環或會話創建,則可能會出現效能問題。
以上是如何使用 Application_Error 在 ASP.NET MVC 中實作自訂錯誤處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!