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
Kaedah ini mengambil HttpRequestMessage sebagai input dan kembali secara tidak segerak HttpResponseMessage. Pelaksanaan biasa melakukan perkara berikut:
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; } }
Pengendali yang diwakilkan juga boleh melangkau pengendali dalaman dan mencipta respons secara langsung.
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; } }
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!