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

时间:2016-10-04 11:46:45

标签: http-headers asp.net-core asp.net-controls

如何从ASP.NET Core控制器的命名空间System.Net.Http.Headers获取强类型头类?在源自Controller的控制器中,Request.Headers可用,但它只返回IHeaderDictionary。还有一种扩展方法HeaderDictionaryTypeExtensions.GetTypedHeaders,但它会返回RequestHeaders,它只包含某些标题。班级HttpRequestHeaders拥有最全面的标题列表,但目前尚不清楚如何访问它。

例如,您如何获得AuthenticationHeaderValue?一个选项是AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]),但这需要对头名称进行硬编码。也许有一种非硬编码方式可以到达HttpRequestHeaders.Authorization

1 个答案:

答案 0 :(得分:12)

使用AuthenticationHeaderValue将标题字符串解析为具有SchemeParameter属性的对象。

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

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