无法检查请求中 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.Headers
是 System.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.
中的示例
我试图获得如下所示的 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.Headers
是 System.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.