ホームページ バックエンド開発 C#.Net チュートリアル asp.net の ExceptionFilter フィルター

asp.net の ExceptionFilter フィルター

Sep 01, 2017 pm 03:07 PM
asp.net フィルター

この記事では、主に asp.net core MVC グローバル フィルターの ExceptionFilter フィルターについて詳しく紹介します。興味のある方は参考にしてください。このシリーズでは、asp.net core の組み込みグローバル フィルターの使用について説明します。 MVCは以下の章に分かれています

asp.net core MVCフィルター - ExceptionFilterフィルター(1)

asp.net core MVCフィルター - ActionFilterフィルター(2)

asp.net core MVCフィルターResultFilterフィルター(3)

asp.net core MVC フィルター ResourceFilter フィルター (4)

asp.net core MVC フィルター AuthorizationFilter フィルター (5)

はじめに

Exception フィルターは、名前が示すように、例外が発生した場合に使用されるフィルターです。プログラム。システム内でキャッチされなかった例外を処理するために使用されます。

カスタム例外フィルターの実装

グローバル例外フィルターをカスタマイズするには、IExceptionFilter インターフェイスの実装が必要です

public class HttpGlobalExceptionFilter : IExceptionFilter
  {
    public void OnException(ExceptionContext context)
    {
      throw new NotImplementedException();
    }
  }
ログイン後にコピー

IExceptionFilter インターフェイスには、システムでキャッチされなかった例外が発生したときにトリガーされる OnException メソッドの実装が必要です。 OnException メソッドには、特定の例外情報、HttpContext、および mvc ルーティング情報を含む ExceptionContext 例外コンテキストがあります。システム内でキャッチされない例外が発生した場合、修正とデバッグを容易にするために、ロギング ツールを使用して例外の詳細情報を記録するのが一般的なアプローチです。以下はロギングの実装です。

  /// <summary>
  /// 全局异常过滤器
  /// </summary>
  public class HttpGlobalExceptionFilter : IExceptionFilter
  {
    readonly ILoggerFactory _loggerFactory;
    readonly IHostingEnvironment _env;

    public HttpGlobalExceptionFilter(ILoggerFactory loggerFactory, IHostingEnvironment env)
    {
      _loggerFactory = loggerFactory;
      _env = env;
    }

    public void OnException(ExceptionContext context)
    {
      var logger = _loggerFactory.CreateLogger(context.Exception.TargetSite.ReflectedType);

        logger.LogError(new EventId(context.Exception.HResult),
        context.Exception,
        context.Exception.Message);

        var json = new ErrorResponse("未知错误,请重试");

        if (_env.IsDevelopment()) json.DeveloperMessage = context.Exception;

        context.Result = new ApplicationErrorResult(json);
        context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

      context.ExceptionHandled = true;
    }

public class ApplicationErrorResult : ObjectResult
  {
    public ApplicationErrorResult(object value) : base(value)
    {
      StatusCode = (int)HttpStatusCode.InternalServerError;
    }
  }

public class ErrorResponse
  {
    public ErrorResponse(string msg)
    {
      Message = msg;
    }
    public string Message { get; set; }
    public object DeveloperMessage { get; set; }
  }
ログイン後にコピー

グローバル フィルターを登録します

フィルターが作成されたので、asp.net core MVC に登録する必要があります。システムのルート ディレクトリで Startup.cs ファイルを見つけ、ConfigureServices メソッドを次のように変更します

 services.AddMvc(options =>
      {
        options.Filters.Add<HttpGlobalExceptionFilter>();
      });
ログイン後にコピー

Test

リクエストで例外をスローします

ログは例外情報を正しくキャプチャします

ブラウザは 500 エラーを返し、カスタマイズされたエラー情報を返します。

以上がasp.net の ExceptionFilter フィルターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue エラー: フィルター内のフィルターが正しく使用できません。解決するにはどうすればよいですか? Vue エラー: フィルター内のフィルターが正しく使用できません。解決するにはどうすればよいですか? Aug 26, 2023 pm 01:10 PM

Vue エラー: フィルター内のフィルターが正しく使用できません。解決するにはどうすればよいですか?はじめに: Vue では、フィルターはデータの書式設定やフィルター処理に使用できる一般的に使用される関数です。ただし、使用中にフィルターを正しく使用できないという問題が発生する場合があります。この記事では、いくつかの一般的な原因と解決策について説明します。 1. 原因分析: フィルターが正しく登録されていません: Vue のフィルターは、テンプレートで使用する前に登録する必要があります。フィルタが正常に登録されなかった場合は、

Vue テクノロジー開発でデータをフィルターおよび並べ替える方法 Vue テクノロジー開発でデータをフィルターおよび並べ替える方法 Oct 09, 2023 pm 01:25 PM

Vue テクノロジ開発でデータをフィルタリングおよび並べ替える方法 Vue テクノロジ開発では、データのフィルタリングと並べ替えは非常に一般的で重要な機能です。データのフィルタリングと並べ替えを通じて、必要な情報を迅速にクエリして表示できるため、ユーザー エクスペリエンスが向上します。この記事では、Vue でデータをフィルターおよび並べ替える方法を紹介し、読者がこれらの関数をよりよく理解して使用できるように具体的なコード例を示します。 1. データのフィルタリング データのフィルタリングとは、特定の条件に基づいて要件を満たすデータをフィルタリングすることを指します。 Vue では、comp を渡すことができます

Vue3 のフィルター関数: データをエレガントに処理する Vue3 のフィルター関数: データをエレガントに処理する Jun 18, 2023 pm 02:46 PM

Vue3 のフィルター関数: データをエレガントに処理する Vue は、大規模なコミュニティと強力なプラグイン システムを備えた人気のある JavaScript フレームワークです。 Vue のフィルター関数は、テンプレート内のデータを処理して書式設定できる非常に実用的なツールです。 Vue3 のフィルター関数にはいくつかの変更が加えられています。この記事では、Vue3 のフィルター関数を詳しく説明し、それらを使用してデータを適切に処理する方法を学びます。フィルター機能とは何ですか? Vue のフィルター関数は次のとおりです。

PHP では、FILTER_VALIDATE_URL 定数は URL の検証に使用されるフィルターを表します PHP では、FILTER_VALIDATE_URL 定数は URL の検証に使用されるフィルターを表します Sep 14, 2023 am 10:37 AM

FILTER_VALIDATE_URL 定数は、URL を検証するために使用されます。フラグ FILTER_FLAG_SCHEME_REQUIRED-URL は RFC に準拠している必要があります。 FILTER_FLAG_HOST_REQUIRED - URL にはホスト名が含まれている必要があります。 FILTER_FLAG_PATH_REQUIRED - URL にはドメイン名の後にパスが必要です。 FILTER_FLAG_QUERY_REQUIRED - URL にはクエリ文字列が必要です。戻り値 FILTER_VALIDATE_URL

PHP 電子メール フィルター: スパムをフィルターして識別します。 PHP 電子メール フィルター: スパムをフィルターして識別します。 Sep 19, 2023 pm 12:51 PM

PHP 電子メール フィルター: スパムをフィルターして識別します。電子メールの普及に伴い、スパムの量も増え続けています。ユーザーにとって、受信するスパムの量は情報過多や時間の無駄につながる可能性があります。したがって、スパムメールをフィルタリングして識別する効率的な方法が必要です。この記事では、PHP を使用してシンプルだが効果的な電子メール フィルターを作成する方法と、具体的なコード例を示します。電子メール フィルタの基本原則 電子メール フィルタの基本原則は、電子メールが

プラグインを使用して Vue でカスタム フィルターを実装するためのヒント プラグインを使用して Vue でカスタム フィルターを実装するためのヒント Jun 25, 2023 pm 05:01 PM

プラグインを使用して Vue でカスタム フィルターを実装するためのヒント Vue.js には、ビュー データのフィルター処理の必要性に対処する便利な方法、つまりフィルター (Filter) が提供されます。フィルターは主に、ビュー内のデータの書式設定と処理を担当して、データをより直感的で理解しやすくします。 Vue には、日付書式設定、通貨書式設定などの一般的に使用されるフィルターがいくつか組み込まれており、カスタム フィルターもサポートしています。この記事では、Vue プラグインを使用してカスタム フィルターを実装する方法を紹介し、いくつかの実用的なフィルター手法を提供します。

Tomcat の文字化けしたコードを解決するいくつかの方法 Tomcat の文字化けしたコードを解決するいくつかの方法 Dec 28, 2023 pm 01:32 PM

Tomcat での中国語の文字化けの問題を解決するためのいくつかの方法 (具体的なコード例が必要) Web 開発では、Tomcat での中国語の文字化けの問題によく遭遇します。この問題により、漢字を処理するときに文字化けが発生したり、ボックス、疑問符、その他の文字が表示されたりして、ユーザーに不快な体験をもたらします。この問題を解決するために、この記事では一般的に使用されるいくつかの方法を紹介し、具体的なコード例を示します。 Tomcat 設定ファイルを変更します。Tomcat インストール ディレクトリで conf/server.xml ファイルを見つけ、デフォルトのファイルを検索します。

Python ロギング モジュールが明らかに: その機能の詳細 Python ロギング モジュールが明らかに: その機能の詳細 Feb 21, 2024 am 09:30 AM

pythonLogging モジュールは、アプリケーションのログを管理するための強力なツールです。開発者がログ情報の生成、処理、表示を制御できるようにする、柔軟で構成可能なフレームワークを提供します。ログ レベル ログ モジュールは、ログ メッセージの重要性を指定するためにいくつかのログ レベルを定義します。これらのレベルは重大度の順に並べられています。 DEBUG: デバッグと開発の目的で使用され、詳細なデバッグ情報が記録されます。 INFO: イベントや操作などの一般的なアプリケーション情報をログに記録します。警告: 必ずしもアプリケーションを中断するわけではない、潜在的な問題または例外をログに記録します。エラー: アプリケーションの障害を引き起こす可能性のある重大なエラーまたは例外をログに記録します。クリティカル: 記録が危険にさらされています

See all articles