web-dev-qa-db-ja.com

ASP.Net Core 2.0ミドルウェアですべてのリクエストヘッダーを取得する方法

ASP.Net Core 2.0では、カスタムミドルウェアで着信要求ヘッダーを検証しようとしています。

問題は、すべてのキーと値のペアのヘッダーを抽出する方法がないことです。必要なヘッダーは保護されたプロパティに保存されています

protected Dictionary<string, stringValues> MaybeUnknown

これまでのところ、私のミドルウェアクラスは次のようになります。

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);
    }
}

私の目標は、特定のキーを知る必要があるいくつかの選択されたヘッダーだけでなく、すべての要求ヘッダーを抽出することです。

6
philipp-fx

httpContext.Request.HeadersDictionaryです。ヘッダー名をキーとして渡すことで、ヘッダーの値を返すことができます。

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