21

現在これを行っていますが、キーが見つからない場合は例外がスローされます。

このスニペットはActionFilterAttribute、オーバーライドされたメソッドで、から継承する Web API フィルタの内部にありますOnActionExecuting

if (actionContext.Request.Headers.GetValues("some_key") != null 
                && actionContext.Request.Headers.GetValues("some_key").First() == "hello")
{

}

これを try/catch でラップする必要がありますか?

4

2 に答える 2

43
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")
        {

        }
    }
}
于 2013-09-24T15:21:05.190 に答える
4

C# 6.0 のリリース以降、Yuriy Faktorovich の回答に代わる構文を以下に示します。ここでは、結果としてヘッダー値または null を 1 行で取得します。

actionContext.Request.Headers.SingleOrDefault(x => x.Key == "some_key").Value?.First()

于 2019-06-07T15:21:36.407 に答える