2013-09-24 25 views
14

Tôi hiện đang làm điều này, nhưng nó ném một ngoại lệ nếu không tìm thấy khóa.Làm thế nào để truy cập một cách an toàn actionContext.Request.Headers.GetValues ​​nếu không tìm thấy khóa?

Đoạn mã này nằm trong bộ lọc api web kế thừa từ ActionFilterAttribute, theo phương pháp được ghi đè OnActionExecuting.

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

} 

Tôi có bị buộc phải quấn cái này trong thử/nắm bắt không?

Trả lời

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

Điều đó không làm việc, không có indexer trong System.Web.Http.Controllers.HttpActionContext – loyalflow

+0

@ user1361315 Tôi là một chút bối rối mà bạn đang nhận được yêu cầu ra khỏi bối cảnh, nhưng tôi đã viết ra toàn bộ thuộc tính cho bạn. –

+0

@ user1361315 lỗi của tôi, tôi đã sửa nó. –

Các vấn đề liên quan