Intercepter les requêtes entrantes avant le contrôleur et le message avant le retour client Asp.net API2.

Dans l’utilisation d’une API, vous pouvez intercepter une requête entrante afin de lire les infos de la requête (Exemple : les headers, …). Vous pouvez également intercepter le message de retour.

Ce traitement se fera avant et après l’appel du contrôleur. Exemple d’utilisation : Vérification du token reçu en header et envoi d’un nouveau token dans le header de la réponse.

Pour ce faire, vous allez devoir mettre en place votre propre DelegatingHandler


/// <summary>

/// Objet pour gérer l'entrée et la sortie des requetes

/// </summary>

public class ResponseHandler : DelegatingHandler

{

/// <summary>

/// Surchage de la méthode pour intercepter les requêtes

/// </summary>

/// <param name="request"></param>

/// <param name="cancellationToken"></param>

/// <returns></returns>

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)

{

// point central pour intercepter les requêtes entrantes

//Lecture du header pour récupérer le token

return base.SendAsync(request, cancellationToken)

.ContinueWith(task =>

{

//Point central pour intercepter les requêtes sortantes

//Ajout du token dans la reponse

return response;

});

}

Une fois cet handler créé, il faut signaler que vous désirez l’utiliser. Cela passe par le Global.asax.cs. Dans la méthode Application_Start() ajoutez.


GlobalConfiguration.Configuration.MessageHandlers.Add(new ResponseHandler());

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.