无法检查请求中 header 值的空值

Unable to check null for header value in request

我试图获得如下所示的 header 值 -

IEnumerable<string> headerValues = request.Headers.GetValues("MyCustomerId");
var id = headerValues.FirstOrDefault();

如果 header 值为空或不存在则抛出错误 - InvalidOperationException

GetValues 的 null 检查不提供任何值,因为它永远不会 return null。如果 header 不存在,您将得到一个 InvalidOperationException

有什么技巧吗?

您可以像这样检查空值:

 if(System.Web.HttpContext.Current.Request.Headers["MyCustomerId"] != null)
   {
      // do something
   }

久经考验

request.HeadersSystem.Net.Http.HttpHeaders 的一个实例(通过 HttpRequestHeaders 子类)。它有一个方法 TryGetValues 可以用来安全地检索 header.

的值
String header = null;
IEnumerable<String> headerValues;
if( this.Request.Headers.TryGetValues("HeaderName", out headerValues) ) {
    header = headerValues.First();
}

您可以使用 Headers.Contains() 来测试是否存在任何 headers。
请参阅 this answer.

中的示例