需要检查两个条件令牌都不在缓存中,加上令牌现在到期时间小于utc



下面的代码为token.ExpiresOn抛出参数null异常,因为令牌不在缓存和null中。有没有办法在IF子句中检查两者-令牌不在缓存中加上令牌现在到期时间小于utc?

if (!_cache.TryGetValue("KEY", out TokenClass token) && token.ExpiresOn < DateTimeOffset.UtcNow)
{
}

您确实想检查令牌是否不在缓存中是否已过期。所以只需使用||:

if (!_cache.TryGetValue("KEY", out TokenClass token) || token.ExpiresOn < DateTimeOffset.UtcNow)
{
// presumably, get a new token
}

这是因为||短路:如果左侧部分的求值结果为true,则右侧部分不会求值(该代码不会运行(。因此,如果您的令牌不在缓存中,则无需检查它是否已过期(这很好,因为这样您就会抛出(。

最新更新