ホームページ > バックエンド開発 > C++ > ASP.NET MVC で例外の詳細を使用したカスタム エラー処理を実装するにはどうすればよいですか?

ASP.NET MVC で例外の詳細を使用したカスタム エラー処理を実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-14 10:17:46
オリジナル
788 人が閲覧しました

How Can I Implement Custom Error Handling with Exception Details in ASP.NET MVC?

ASP.NET MVC でのカスタム エラー処理: Global.asax の Application_Error イベント

ASP.NET MVC アプリケーションでは、Global.asax の Application_Error イベントは、ハンドルされない例外を処理し、カスタム エラー ページを提供するために重要です。

エラー コントローラーにデータを渡す

Application_Error イベントの現在のコードは、HTTP ステータス コードを決定し、Error コントローラーに渡す RouteData オブジェクトを設定します。ただし、このコードには、例外の詳細をコントローラーに渡す方法が提供されていません。

堅牢なアプローチは、クエリ文字列パラメーターを使用して例外情報を送信することです。変更された 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 アクションにリダイレクトすると、リクエストのセッション オブジェクトが作成され、使用率の高いシステムのパフォーマンスに影響を与える可能性があります。
  • エラー処理が堅牢であることを確認し、権限のないユーザーに機密情報が表示されないようにします。

以上がASP.NET MVC で例外の詳細を使用したカスタム エラー処理を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート