ホームページ  >  記事  >  バックエンド開発  >  Asp.Net WebAPI C# での DelegatingHandler の使用法は何ですか?

Asp.Net WebAPI C# での DelegatingHandler の使用法は何ですか?

PHPz
PHPz転載
2023-09-12 11:33:04607ブラウズ

Asp.Net webAPI C# 中 DelegatingHandler 的用法是什么?

メッセージ ハンドラーでは、一連のメッセージ ハンドラーがチェーン化されています。最初のハンドラーは HTTP リクエストを受信し、何らかの処理を行ってから、そのリクエストを次のハンドラーに渡します。ある時点で、応答が作成され、チェーンに返されます。このパターンは Delegated Handler と呼ばれます。

組み込みのサーバー側メッセージ ハンドラーに加えて、独自のサーバー側 HTTP メッセージ ハンドラーを作成することもできます。 カスタムサーバーサイドHTTPを作成する ASP.NET Web API のメッセージ ハンドラー には、DelegatingHandler を使用します。 System.Net.Http.DelegatingHandler から派生したクラスを作成する必要があります。カスタム クラスは、SendAsync メソッドをオーバーライドする必要があります。

タスク6dd523501409924761d8a0f04c8cbf08 SendAsync(HttpRequestMessage request, cancelToken cancelToken);

このメソッドは HttpRequestMessage を入力として受け取り、非同期で返します。 HttpResponseメッセージ。一般的な実装では、次の操作が実行されます。

  • 要求メッセージを処理します。
  • base.SendAsync を呼び出して、内部ハンドラーに要求を送信します。
  • 内部ハンドラーは応答メッセージを返します。 (このステップは非同期です。)
  • 応答を処理し、呼び出し元に返します。

Example

public class CustomMessageHandler : DelegatingHandler{
   protected async override Task<HttpResponseMessage> SendAsync(
   HttpRequestMessage request, CancellationToken cancellationToken){
      Debug.WriteLine("CustomMessageHandler processing the request");
      // Calling the inner handler
      var response = await base.SendAsync(request, cancellationToken);
      Debug.WriteLine("CustomMessageHandler processing the response");
      return response;
   }
}

デリゲート ハンドラーは、内部ハンドラーをスキップして、応答を直接作成することもできます。

public class CustomMessageHandler: DelegatingHandler{
   protected override Task<HttpResponseMessage> SendAsync(
   HttpRequestMessage request, CancellationToken cancellationToken){
      // Create the response
      var response = new HttpResponseMessage(HttpStatusCode.OK){
         Content = new StringContent("Skipping the inner handler")
      };
      // TaskCompletionSource creates a task that does not contain a delegate
      var taskCompletion = new TaskCompletionSource<HttpResponseMessage>();
      taskCompletion.SetResult(response);
      return taskCompletion.Task;
   }
}

以上がAsp.Net WebAPI C# での DelegatingHandler の使用法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。