如果找不到键,如何安全地访问 actionContext.Request.Headers.GetValues
本文关键字:访问 actionContext Request GetValues Headers 安全 找不到 何安全 如果 | 更新日期: 2023-09-27 18:32:32
我目前正在这样做,但如果找不到键,它会引发异常。
此代码片段位于从 ActionFilterAttribute
继承的 Web API 筛选器内,在重写的方法 OnActionExecuting
中。
if (actionContext.Request.Headers.GetValues("some_key") != null
&& actionContext.Request.Headers.GetValues("some_key").First() == "hello")
{
}
我是否被迫将其包装在尝试/捕获中?
class MyFilter : System.Web.Http.Filters.ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
IEnumerable<string> values;
if (actionContext.Request.Headers.TryGetValues("some_key", out values) && values.First() == "hello")
{
}
}
}
自 C# 6.0 发布以来,这里是 Yuriy Faktorovich 答案的替代语法,您将在一行中获得标头值或 null 作为结果。
actionContext.Request.Headers.SingleOrDefault(x => x.Key == "some_key").Value?.First()