if (Request.Headers["XYZComponent"].Count() > 0)
尝试计算返回字符串中的字符数,但如果标题不存在,则会返回NULL,因此会引发异常。您的第二个示例实际上执行相同的操作,它将搜索标头集合,并在不存在时返回NULL,然后您尝试计算其字符数:
请改用以下内容替换:
if(Request.Headers["XYZComponent"] != null)
或者如果你想把空白或空字符串视为未设置的话,可以使用:
if((Request.Headers["XYZComponent"] ?? "").Trim().Length > 0)
如果header为null,Null Coalesce运算符??将返回一个空字符串,防止抛出NullReferenceException。
你第二次尝试的变化也可以工作:
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。如果Header的值是字符串'true',则返回true。