如果标头不存在,如何获取空值

时间:2014-03-11 09:05:41

标签: c# asp.net-mvc http-headers

我正在使用请求上下文来获取名为“token”的标头的值。

 var token = context.request.Headers.GetValues("Token")

现在如果标题存在。这一切都可以工作数百个,但是现在如果标头不存在,我希望它返回null。但它会引发异常System.InvalidOperationExecption

我唯一的选择是试一试吗?

7 个答案:

答案 0 :(得分:6)

你可以这样做

if (Context.Request.Headers["Token"] != null)
{
      var token = Context.Request.Headers.GetValues("Token");         
      return token;
}
else 
      return null;

答案 1 :(得分:0)

您可以使用Try Catch逻辑:

try
{
    var token = context.request.Headers.GetValues("Token");
}

catch
{
    var token = null;
}

答案 2 :(得分:0)

尝试使用此:

 var token = string.IsNullOrEmpty(context.request.Headers.GetValues("Token")) ? null :
                               context.request.Headers.GetValues("Token");

答案 3 :(得分:0)

Headers类提供了一种Contains()方法。

示例1:

if (!request.Headers.Contains("Token"))
    {
        return null;
    }

示例2:

string token = request.Headers.Contains("Token") ? request.Headers.GetValues("Token").First() : null;

答案 4 :(得分:0)

下面是如何检查标头是否存在以及值是否为空的示例。

这些示例正在使用DotNet Core 3.1

检查它是否存在-不在乎值:


if (context.HttpContext.Request.Headers.Any(h => h.Key.Equals("X-SOME-HEADER", StringComparison.InvariantCultureIgnoreCase))) {
    // Success
    _logger.info('Header found');
} else {
    // Failure
    _logger.info('Header not found');
}

检查它是否存在并输出值:

if (context.HttpContext.Request.Headers.TryGetValue("X-SOME-HEADER", out var token)) {
    // Found header
    _logger.info($"Header found. Null:[{!token.Any()}]")
} else {
    // Failure
    _logger.info('Header not found');
}

答案 5 :(得分:0)

我遇到了同样的问题,当标题不存在时,会向我抛出错误。但是,我设法找到了一种使用.NET Core 3.1的简单方法,并且可以在1行中完成,并且可以避免出现任何这些错误。

但简而言之,它会检查标头是否包含键“令牌”,如果是,则返回值,否则返回null。

string token = HttpContext.Request.Headers.ContainsKey("Token") ? HttpContext.Request.Headers["Token"][0] : null;

答案 6 :(得分:-1)

if (Context.Request.Headers.ContainsKey("Token"))
{
      var token = Context.Request.Headers["Token"].Value;         
      return token;
}
else 
      return null;