ホームページ > バックエンド開発 > C#.Net チュートリアル > Asp.Net WebAPI C# での DelegatingHandler の使用法は何ですか?

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

PHPz
リリース: 2023-09-12 11:33:04
転載
807 人が閲覧しました

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

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

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

タスク 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 サイトの他の関連記事を参照してください。

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