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

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

王林
王林転載
2023-09-02 11:01:12818ブラウズ

如何处理中间件 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 までご連絡ください。