if (Request.Headers["XYZComponent"].Count() > 0)
... sera tenté de compter le nombre de caractères dans la chaîne retournée, mais si l'en-tête n'existe pas, il retournera NULL, c'est pourquoi il lance une exception. Votre deuxième exemple réalise effectivement la même chose, il va chercher à travers la collection de têtes et retourne NULL si elle n'existe pas, que vous essayez ensuite de compter le nombre de caractères:
Utilisez ce lieu:
if(Request.Headers["XYZComponent"] != null)
ou si vous voulez traiter les chaînes vides ou vides ne pas cochés alors utiliser:
if((Request.Headers["XYZComponent"] ?? "").Trim().Length > 0)
L'opérateur nul Coalesce ?? retournera une chaîne vide si l'en-tête est null, l'arrêtant en lançant une exception NullReferenceException.
Une variante de votre deuxième tentative travaillera également:
if (Request.Headers.AllKeys.Any(k => string.Equals(k, "XYZComponent")))
Edit: Désolé ne savais pas que vous vérifiez explicitement la valeur vrai:
bool isSet = Boolean.TryParse(Request.Headers["XYZComponent"], out isSet) && isSet;
Renvoie false si la valeur de l'en-tête est false ou si Header n'a pas été défini ou si Header est une valeur autre que vrai ou faux. Retourne vrai est la valeur d'en-tête est la chaîne « true »
Je ne sais pas si MVC encapsule la fonctionnalité mais dans HTTP lui-même les en-têtes sont de la forme "XYZComponent: true". Je ne fais que commencer si vous avez réussi à définir un en-tête comme "XYZComponent = true:" (c'est-à-dire que toute la chaîne que vous avez citée est le nom et donc ce que vous devez vérifier. pour itérer à travers les touches ... – Chris