如何从ASP.NET Core控制器的命名空间System.Net.Http.Headers
中获取强类型的头文件类?在从Controller
派生的控制器中,Request.Headers
是可用的,但它仅返回IHeaderDictionary
。还有一个扩展方法HeaderDictionaryTypeExtensions.GetTypedHeaders
,但是它返回RequestHeaders
,它仅具有某些标头。类HttpRequestHeaders
具有最全面的标题列表,但是尚不清楚如何访问它。
例如,您将如何获得AuthenticationHeaderValue
?一个选项是AuthenticationHeaderValue.Parse(Request.Headers["Authorization"])
,但是需要对标题名称进行硬编码。也许有一种非硬编码的方式可以到达HttpRequestHeaders.Authorization
。
最佳答案
使用AuthenticationHeaderValue
将标头字符串解析为具有Scheme
和Parameter
属性的对象。
var auth = AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization]);
if (auth.Scheme != expectedScheme || !MyVerifyAuthParamteter(auth.Parameter)) ...