Maison > développement back-end > Tutoriel C#.Net > Quelle est l'utilisation de DelegatingHandler dans Asp.Net webAPI C# ?

Quelle est l'utilisation de DelegatingHandler dans Asp.Net webAPI C# ?

PHPz
Libérer: 2023-09-12 11:33:04
avant
655 Les gens l'ont consulté

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

Dans un gestionnaire de messages, une série de gestionnaires de messages sont liés entre eux. Le premier gestionnaire reçoit la requête HTTP, effectue un certain traitement, puis transmet la requête au gestionnaire suivant. À un moment donné, une réponse est créée et renvoyée à la chaîne. Ce modèle est appelé Delegated Handler.

En plus des gestionnaires de messages intégrés côté serveur, nous pouvons également créer nos propres gestionnaires de messages HTTP côté serveur. Créez un HTTP personnalisé côté serveur Pour les gestionnaires de messages dans l'API Web ASP.NET, nous utilisons DelegatingHandler. Nous devons créer une classe dérivée de System.Net.Http.DelegatingHandler. Cette classe personnalisée doit alors remplacer la méthode SendAsync.

Tâche SendAsync (demande HttpRequestMessage, CancellationToken CancellationToken);

Cette méthode prend HttpRequestMessage en entrée et renvoie de manière asynchrone HttpResponseMessage. Une implémentation typique effectue les opérations suivantes :

  • Traitez le message de demande.
  • Appelez base.SendAsync pour envoyer la demande au gestionnaire interne.
  • Le gestionnaire interne renvoie un message de réponse. (Cette étape est asynchrone.)
  • Traitez la réponse et renvoyez-la à l'appelant.

Exemple

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;
   }
}
Copier après la connexion

Les gestionnaires délégués peuvent également ignorer le gestionnaire interne et créer directement la réponse.

Exemple

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;
   }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal