在 ASP.NET Core 中获取强类型 header class

Obtain strongly typed header class in ASP.NET Core

如何从 ASP.NET 核心控制器的命名空间 System.Net.Http.Headers 中获取强类型 header class?在派生自 Controller 的控制器中,Request.Headers 可用,但它只是 returns IHeaderDictionary。还有一个扩展方法HeaderDictionaryTypeExtensions.GetTypedHeaders,但是它returnsRequestHeaders,它只有某些header。 class HttpRequestHeaders 具有最全面的 header 列表,但不清楚如何访问它。

例如,您将如何获得 AuthenticationHeaderValue?一种选择是 AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]),但这需要对 header 名称进行硬编码。也许有一种 non-hard-coded 的方法可以到达 HttpRequestHeaders.Authorization

使用 AuthenticationHeaderValue 将 header 字符串解析为具有 SchemeParameter 属性的 object。

var auth = AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization]);

if (auth.Scheme != expectedScheme || !MyVerifyAuthParamteter(auth.Parameter)) ...