2013-09-24 34 views
14

我目前正在執行此操作,但如果未找到密鑰,則會引發異常。如果找不到密鑰,如何安全地訪問actionContext.Request.Headers.GetValues?

此代碼片段位於網頁api過濾器內部,該網頁過濾器從ActionFilterAttribute繼承,覆蓋方法OnActionExecuting

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

} 

我是否被迫在try/catch中包裝它?

回答

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

     } 
    } 
} 
+0

那是不行的,有在System.Web.Http.Controllers.HttpActionContext – loyalflow

+0

@ user1361315我你在哪裏得到請求了上下文的有點糊塗了沒有索引,但我已經爲你寫出了完整的屬性。 –

+0

@ user1361315我的錯誤,我修復了它。 –