如果找不到键,如何安全地访问 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")
{
}

我是否被迫将其包装在尝试/捕获中?

如果找不到键,如何安全地访问 actionContext.Request.Headers.GetValues

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()