176 votes

Comment extraire la valeur d'un en-tête personnalisé dans le gestionnaire de messages de l'API Web ?

J'ai actuellement un gestionnaire de messages dans mon service d'API Web qui remplace "SendAsync" comme suit :

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
  //implementation
}

Dans ce code, je dois inspecter une valeur d'en-tête de demande ajoutée personnalisée nommée MyCustomID . Le problème est que lorsque je fais ce qui suit :

if (request.Headers.Contains("MyCustomID"))  //OK
    var id = request.Headers["MyCustomID"];  //build error - not OK

...je reçois le message d'erreur suivant :

Impossible d'appliquer l'indexation avec [] à une expression de type System.Net.Http.Headers.HttpRequestHeaders'.

Comment puis-je accéder à un simple l'en-tête de demande personnalisé via l'en-tête HttpRequestMessage ( Documentation MSDN ) passée dans cette méthode surchargée ?

0 votes

Que se passe-t-il si vous utilisez request.Headers.Get("MyCustomID"); ?

3 votes

Il n'y a pas Get' on the Type "HttpRequestHeaders". Le message : "Cannot resolve symbol 'Get'" est produit.

0voto

Saon Mukherjee Points 1
var token = string.Empty;
if (Request.Headers.TryGetValue("MyKey",  out headerValues))
{
    token = headerValues.FirstOrDefault();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X