在 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 字符串解析为具有 Scheme
和 Parameter
属性的 object。
var auth = AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization]);
if (auth.Scheme != expectedScheme || !MyVerifyAuthParamteter(auth.Parameter)) ...
如何从 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 字符串解析为具有 Scheme
和 Parameter
属性的 object。
var auth = AuthenticationHeaderValue.Parse(Request.Headers[HeaderNames.Authorization]);
if (auth.Scheme != expectedScheme || !MyVerifyAuthParamteter(auth.Parameter)) ...