web-dev-qa-db-fra.com

Impossible d'obtenir l'en-tête de la demande dans l'API Web ASP NET Core

J'essaie de créer un filtre personnalisé dans l'API Web Net Asp Net qui est comme ci-dessous mais incapable d'obtenir des informations d'en-tête.

internal class BasicAuthFilterAttribute : ActionFilterAttribute
{
  private StringValues xyz;

  public override void OnActionExecuting(ActionExecutingContext actionContext)
  {
    var authHeader = actionContext.HttpContext.Request.Headers.TryGetValue("Basic", out xyz);           
  }
}

TryGetValue renvoie toujours false mais je peux voir que Headers contient l'en-tête "Basic". Comme je suis nouveau dans ASP.NET Core, est-ce que quelqu'un peut me guider sur ce que je fais peut-être de mal?

Voici à quoi ressemblent les en-têtes. enter image description here

14
Jyotish Singh

Merci à tous pour votre précieuse contribution, mais le code ci-dessous a fonctionné comme prévu.

actionContext.HttpContext.Request.Headers.TryGetValue("Authorization", out authorizationToken);
26
Jyotish Singh

Celui-ci, ça va? Nous devons embrasser les nouvelles variables. :)

bool tryGetValue = actionContext.ActionArguments.TryGetValue("data", out data);
1
Foyzul Karim
public static class HttpRequestExtension
{
    public static string GetHeader(this HttpRequest request, string key)
    {
        return request.Headers.FirstOrDefault(x => x.Key == key).Value.FirstOrDefault();
    }
}

méthode d'appel:

 var Authorization = Request.GetHeader("Authorization");
0
impotunator
var xyz = context.HttpContext.Request?.Headers["Basic"];
0
ben yip