if (Request.Headers["XYZComponent"].Count() > 0)
... 返された文字列の文字数をカウントしようとしますが、ヘッダーが存在しない場合は NULL が返されるため、例外がスローされます。2番目の例は効果的に同じことを行います。ヘッダーのコレクションを検索し、存在しない場合は NULL を返します。次に、文字数を数えようとします。
代わりにこれを使用してください:
if(Request.Headers["XYZComponent"] != null)
または、空白または空の文字列を未設定として扱いたい場合は、次を使用します。
if((Request.Headers["XYZComponent"] ?? "").Trim().Length > 0)
Null 合体演算子 ?? ヘッダーが null の場合は空の文字列を返し、NullReferenceException のスローを停止します。
2 回目の試行のバリエーションも機能します。
if (Request.Headers.AllKeys.Any(k => string.Equals(k, "XYZComponent")))
編集:申し訳ありませんが、値trueを明示的にチェックしていることに気付きませんでした:
bool isSet = Boolean.TryParse(Request.Headers["XYZComponent"], out isSet) && isSet;
Header 値が false の場合、または Header が設定されていない場合、または Header が true または false 以外の値である場合は、false を返します。ヘッダー値が文字列「true」の場合、true を返します