无法在请求中为标头值检查null

时间:2016-02-17 09:31:33

标签: c# asp.net-web-api httprequest

我试图获得如下的标题值 -

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

如果标头值为null或不存在,则抛出错误 - InvalidOperationException

GetValues的空检查不会提供任何值,因为它永远不会返回null。如果标题不存在,您将获得InvalidOperationException

这样做的任何技巧?

3 个答案:

答案 0 :(得分:3)

您可以像这样检查null:

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

尝试并测试

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

您可以使用Headers.Contains()测试任何标头的存在。
请参阅this answer中的示例。