59 votes

Obtenir une valeur Request.Headers

C'est très simple j'en suis sûr, mais ça me fait grimper le mur ! Il y a un composant que j'utilise dans mon application Web qui s'identifie lors d'une requête Web en ajoutant l'en-tête "XYZComponent=true" - le problème que j'ai est, comment vérifiez-vous cela à votre avis ?

Les éléments suivants ne fonctionneront pas :

 if (Request.Headers["XYZComponent"].Count() > 0)

Ni ça :

 if (Request.Headers.AllKeys.Where(k => k == "XYZComponent").Count() > 0)

Les deux lèvent des exceptions si la variable d'en-tête n'a pas été définie. Toute aide sera très appréciée.

5voto

Darin Dimitrov Points 528142

Premièrement, vous ne le faites pas à votre avis. Vous le faites dans le contrôleur et renvoyez un modèle de vue à la vue afin que la vue n'ait pas besoin de se soucier des en-têtes HTTP personnalisés, mais simplement d'afficher des données sur le modèle de vue :

 public ActionResult Index()
{
    var xyzComponent = Request.Headers["xyzComponent"];
    var model = new MyModel 
    {
        IsCustomHeaderSet = (xyzComponent != null)
    }
    return View(model);
}

3voto

Rob Points 24505

Le code suivant devrait vous permettre de vérifier l'existence de l'en-tête que vous recherchez dans Request.Headers :

 if (Request.Headers.AllKeys.Contains("XYZComponent"))
{
    // Can now check if the value is true:
    var value = Convert.ToBoolean(Request.Headers["XYZComponent"]);
}

2voto

LukeH Points 110965
if ((Request.Headers["XYZComponent"] ?? "") == "true")
{
    // header is present and set to "true"
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X