C#
 Computer >> コンピューター >  >> プログラミング >> C#

ミドルウェアC#Asp.net Coreでエラーを処理する方法は?


CustomExceptionMiddlewareという名前の新しいフォルダーとその中にclassExceptionMiddleware.csを作成します。

最初に行う必要があるのは、依存性注入を介してIloggerManagerサービスとRequestDelegateを登録することです。

RequestDeleagateタイプの_nextパラメーターは、HTTPリクエストを処理できる関数デリゲートです。

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

_nextデリゲートは要求を処理する必要があり、コントローラーからのGetアクションは正常な応答を生成する必要があります。ただし、リクエストが失敗した場合(例外を強制しているため)、

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

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クラスのConfigureメソッドで使用します-

app.ConfigureCustomExceptionMiddleware();

  1. C#ASP.NETWebAPIでURIを使用してWebAPIバージョニングを行う方法は?

    Web APIサービスが公開されると、さまざまなクライアントアプリケーションがWebAPIサービスの使用を開始します。ビジネスの成長と要件の変化に応じて、サービスも変更する必要がある場合がありますが、サービスの変更は、既存のクライアントアプリケーションを壊さない方法で行う必要があります。 これは、WebAPIのバージョン管理が役立つ場合です。既存のサービスをそのまま維持するため、既存のクライアントアプリケーションを壊さずに、新しいクライアントアプリケーションが使用を開始できる新しいバージョンのサービスを開発します。 バージョン管理を実装するオプションの1つは、URIを使用することです。以下

  2. C#ASP.NET WebAPIでCORSの問題を解決するにはどうすればよいですか?

    クロスオリジンリソースシェアリング (CORS)は、追加のHTTPヘッダーを使用して、あるオリジンで実行されているWebアプリケーションに、別のオリジンから選択されたリソースへのアクセスを許可するようにブラウザーに指示するメカニズムです。 Webアプリケーションは、自身とは異なるオリジン(ドメイン、プロトコル、またはポート)を持つリソースを要求すると、クロスオリジンHTTPリクエストを実行します。 たとえば、フロントエンド(UI)とバックエンド(サービス)を持つアプリケーションについて考えてみましょう。フロントエンドがhttps://demodomain-ui.comから提供されているとしま