在ASP.NET Core中获取强类型的头部类

20
如何从 ASP.NET Core 控制器中的命名空间 System.Net.Http.Headers 获取强类型的头部类?在派生自控制器 Controller 的控制器中,可以使用 Request.Headers,但它只返回 IHeaderDictionary。还有一个扩展方法 HeaderDictionaryTypeExtensions.GetTypedHeaders,但它返回的是 RequestHeaders,该对象仅包含某些标头。而类 HttpRequestHeaders 包含了最全面的标头列表,但如何访问它并不清楚。
例如,如何获取一个 AuthenticationHeaderValue?一种选择是 AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]),但这需要硬编码头部名称。也许有一种非硬编码的方法来获取 HttpRequestHeaders.Authorization

可能是ASP.NET 5中的HTTP标头类型都去哪了?的重复问题。 - Tseng
@Tseng 那个问题有一个基于“RequestHeaders”的已接受答案,对于某些标头很有用,但对于其他标头则不是。这个问题关注的是如何获取在ASP.NET Core 1.0中可用的更全面的“HttpRequestHeaders”。 - Edward Brey
1
我在GitHub项目上发布了这个问题。 - Edward Brey
1个回答

22
使用AuthenticationHeaderValue将标头字符串解析为具有SchemeParameter属性的对象。
var auth = AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization]);

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接