web-dev-qa-db-fra.com

ASP.Net Core 2.0 Comment obtenir tous les en-têtes de demande dans le middleware?

Dans ASP.Net Core 2.0, j'essaie de valider les en-têtes de demande entrants dans un middleware personnalisé.

Le problème est que je ne sais pas comment extraire tous les en-têtes de paires clé-valeur. Les en-têtes dont j'ai besoin sont stockés dans une propriété protégée

protected Dictionary<string, stringValues> MaybeUnknown

Ma classe de middleware ressemble à ceci jusqu'à présent:

public class HeaderValidation
{
    private readonly RequestDelegate _next;
    public HeaderValidation(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext httpContext)
    {
        IHeaderDictionary headers = httpContext.Request.Headers; // at runtime headers are of type FrameRequestHeaders

        // How to get the key-value-pair headers?
        // "protected Dictionary<string, stringValues> MaybeUnknown" from headers is inaccessbile due to its protection level
        // Casting headers as Dictionary<string, StringValues> results in null

        await _next.Invoke(httpContext);
    }
}

Mon objectif est d'extraire tous les en-têtes de demande et pas seulement quelques en-têtes sélectionnés pour lesquels je dois connaître les clés spécifiques.

6
philipp-fx

httpContext.Request.Headers est un Dictionary. Vous pouvez renvoyer la valeur d'un en-tête en passant le nom de l'en-tête comme clé:

context.Request.Headers["Connection"].ToString()
7
Marc LaFleur