2013-09-24 4 views
14

Attualmente sto facendo questo, ma genera un'eccezione se la chiave non viene trovata.Come accedere in modo sicuro actionContext.Request.Headers.GetValues ​​se la chiave non viene trovata?

Questo snippet si trova all'interno di un filtro API Web che eredita da ActionFilterAttribute, nel metodo sovrascritto OnActionExecuting.

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

} 

Sono obbligato a concludere questo in una prova/cattura?

risposta

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

che non funziona, non c'è indicizzatore in System.Web.Http.Controllers.HttpActionContext – loyalflow

+0

@ user1361315 Sono un po 'confuso in cui stai ricevendo la richiesta fuori dal contesto, ma io' Ho scritto l'attributo completo per te. –

+0

@ user1361315 il mio errore, l'ho risolto. –

Problemi correlati