Rumah > pembangunan bahagian belakang > Tutorial C#.Net > Apakah kegunaan DelegatingHandler dalam Asp.Net webAPI C#?

Apakah kegunaan DelegatingHandler dalam Asp.Net webAPI C#?

PHPz
Lepaskan: 2023-09-12 11:33:04
ke hadapan
700 orang telah melayarinya

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

Dalam pengendali mesej, satu siri pengendali mesej dipautkan bersama. Pengendali pertama menerima permintaan HTTP, melakukan beberapa pemprosesan, dan kemudian menyerahkan permintaan itu kepada pengendali seterusnya. Pada satu ketika, respons dibuat dan dikembalikan ke rantai. Corak ini dipanggil Pengendali Diwakilkan.

Selain pengendali mesej bahagian pelayan terbina dalam, kami juga boleh mencipta pengendali mesej HTTP sebelah pelayan kami sendiri. Buat HTTP sisi pelayan tersuai Untuk pengendali mesej dalam API Web ASP.NET, kami menggunakan DelegatingHandler. Kita perlu mencipta kelas yang diperoleh daripada System.Net.Http.DelegatingHandler. Kelas tersuai ini kemudiannya harus mengatasi kaedah SendAsync.

Task CancellationToken CancellationToken);

Kaedah ini mengambil HttpRequestMessage sebagai input dan kembali secara tidak segerak HttpResponseMessage. Pelaksanaan biasa melakukan perkara berikut:

  • Memproses mesej permintaan.
  • Panggilan pangkalan.SendAsync untuk menghantar permintaan kepada pengendali dalaman.
  • Pengendali dalaman mengembalikan mesej respons. (Langkah ini tidak segerak.)
  • Proses respons dan kembalikan kepada pemanggil.

Contoh

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;
   }
}
Salin selepas log masuk

Pengendali yang diwakilkan juga boleh melangkau pengendali dalaman dan mencipta respons secara langsung.

Contoh

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;
   }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah kegunaan DelegatingHandler dalam Asp.Net webAPI C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan