if (Request.Headers["XYZComponent"].Count() > 0)
... будет пытаться подсчитать количество символов в возвращаемой строке, но если заголовок не существует, он вернет NULL, поэтому он генерирует исключение. Ваш второй пример эффективно делает то же самое, он будет искать в коллекции заголовков и возвращать NULL, если он не существует, и затем вы пытаетесь подсчитать количество символов:
Используйте это вместо этого:
if(Request.Headers["XYZComponent"] != null)
Или, если вы хотите обрабатывать пустые или пустые строки как не установленные, используйте:
if((Request.Headers["XYZComponent"] ?? "").Trim().Length > 0)
Оператор Null Coalesce ?? вернет пустую строку, если заголовок имеет значение null, что остановит создание исключения NullReferenceException.
Вариант вашей второй попытки также будет работать:
if (Request.Headers.AllKeys.Any(k => string.Equals(k, "XYZComponent")))
Изменить. Извините, я не понял, что вы явно проверяли значение true:
bool isSet = Boolean.TryParse(Request.Headers["XYZComponent"], out isSet) && isSet;
Возвращает false, если значение заголовка равно false, или если заголовок не был установлен, или если заголовок имеет любое другое значение, кроме true или false. Вернет true, если значение заголовка является строкой «true»
person
Sunday Ironfoot
schedule
20.08.2010