首頁  >  文章  >  後端開發  >  Asp.Net webAPI C# 中 DelegatingHandler 的用法是什麼?

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

PHPz
PHPz轉載
2023-09-12 11:33:04648瀏覽

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

在訊息處理程序中,一系列訊息處理程序連結在一起。第一個處理程序接收 HTTP 請求,進行一些處理,然後將請求交給下一個處理程序。在某個時刻,響應會被創建並返回到鏈上。這種模式稱為委託處理程序

除了內建的伺服器端訊息處理程序之外,我們還可以建立自己的伺服器端 HTTP 訊息處理程序。 建立自訂伺服器端 HTTP ASP.NET Web API 中的訊息處理程序,我們使用DelegatingHandler。我們必須建立一個從System.Net.Http.DelegatingHandler衍生的類別。然後,該自訂類別應重寫 SendAsync 方法。

Task6dd523501409924761d8a0f04c8cbf08 SendAsync(HttpRequestMessage request, CancellationToken CancellationToken);

該方法將 HttpRequestMessage 作為輸入並非同步返回 HttpResponseMessage。典型的實作執行以下操作:

  • 處理請求訊息。
  • 呼叫 base.SendAsync 將請求傳送到內部處理程序。
  • 內部處理程序傳回一條回應訊息。 (此步驟是異步的。)
  • 處理回應並將其傳回給呼叫者。

範例

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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除