ホームページ > バックエンド開発 > C#.Net チュートリアル > ミドルウェア C# Asp.net Core でのエラーを処理するにはどうすればよいですか?

ミドルウェア C# Asp.net Core でのエラーを処理するにはどうすればよいですか?

王林
リリース: 2023-09-02 11:01:12
転載
864 人が閲覧しました

如何处理中间件 C# Asp.net Core 中的错误?

CustomExceptionMiddleware という名前の新しいフォルダーとクラスを作成します。 ExceptionMiddleware.cs が入っています。

最初に行う必要があるのは、IloggerManager サービスを登録し、 依存関係注入を通じて RequestDelegate を実装します。

RequestDeleagate 型の _next パラメーターは、処理可能な関数デリゲートです。 HTTP リクエスト。

登録プロセスの後、InvokeAsync() メソッドを作成する必要があります。 RequestDelegate はそれなしではリクエストを処理できません。

_次のデリゲートはコントローラーのリクエストと Get オペレーションを処理する必要があります 成功した応答が生成されるはずです。しかし、リクエストが失敗した場合 (実際に失敗した場合)、 例外を強制しているため、

ミドルウェアは catch ブロックをトリガーし、HandleExceptionAsync を呼び出します。 方法。

public class ExceptionMiddleware{
   private readonly RequestDelegate _next;
   private readonly ILoggerManager _logger;
   public ExceptionMiddleware(RequestDelegate next, ILoggerManager logger){
      _logger = logger;
      _next = next;
   }
   public async Task InvokeAsync(HttpContext httpContext){
      try{
            await _next(httpContext);
      }
      catch (Exception ex){
         _logger.LogError($"Something went wrong: {ex}");
         await HandleExceptionAsync(httpContext, ex);
      }
   }
   private Task HandleExceptionAsync(HttpContext context, Exception exception){
      context.Response.ContentType = "application/json";
      context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
      return context.Response.WriteAsync(new ErrorDetails(){
         StatusCode = context.Response.StatusCode,
         Message = "Internal Server Error from the custom middleware."
      }.ToString());
   }
}
ログイン後にコピー

別の静的メソッドを使用して ExceptionMiddlewareExtensions クラスを変更します -

public static void ConfigureCustomExceptionMiddleware(this IApplicationBuilder
app){
   app.UseMiddleware<ExceptionMiddleware>();
}
ログイン後にコピー

このメソッドを Startup クラスの構成メソッドで使用します -

app.ConfigureCustomExceptionMiddleware();
ログイン後にコピー

以上がミドルウェア C# Asp.net Core でのエラーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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