ホームページ >バックエンド開発 >C#.Net チュートリアル >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メッセージ。一般的な実装では、次の操作が実行されます。
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 サイトの他の関連記事を参照してください。