Heim > Artikel > Backend-Entwicklung > Wozu dient DelegatingHandler in Asp.Net webAPI C#?
In einem Message-Handler sind eine Reihe von Message-Handlern miteinander verknüpft. Der erste Handler empfängt die HTTP-Anfrage, führt einige Verarbeitungsvorgänge durch und übergibt die Anfrage dann an den nächsten Handler. Irgendwann wird eine Antwort erstellt und an die Kette zurückgegeben. Dieses Muster heißt Delegated Handler.
Zusätzlich zu den integrierten serverseitigen Nachrichtenhandlern können wir auch unsere eigenen serverseitigen HTTP-Nachrichtenhandler erstellen. Erstellen Sie benutzerdefiniertes serverseitiges HTTP Für Nachrichtenhandler in der ASP.NET-Web-API verwenden wir DelegatingHandler. Wir müssen eine von System.Net.Http.DelegatingHandler abgeleitete Klasse erstellen. Diese benutzerdefinierte Klasse sollte dann die Methode SendAsync überschreiben.
Task6dd523501409924761d8a0f04c8cbf08 SendAsync(HttpRequestMessage request, CancellationToken CancellationToken);
Diese Methode verwendet HttpRequestMessage als Eingabe und gibt asynchron zurück HttpResponseMessage. Eine typische Implementierung führt Folgendes aus:
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; } }
Delegierte Handler können den inneren Handler auch überspringen und die Antwort direkt erstellen.
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; } }
Das obige ist der detaillierte Inhalt vonWozu dient DelegatingHandler in Asp.Net webAPI C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!