首頁 >後端開發 >C++ >如何使用 Application_Error 在 ASP.NET MVC 中實作自訂錯誤處理?

如何使用 Application_Error 在 ASP.NET MVC 中實作自訂錯誤處理?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-14 10:02:47276瀏覽

How to Implement Custom Error Handling in ASP.NET MVC using Application_Error?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn