如何解决在 IMemoryCache 上调用扩展方法 GetOrCreateAsync 时是否可以避免缓存?
我正在使用 IMemoryCache
来缓存从身份服务器检索到的令牌。
过去我使用过 GetOrCreateAsync
库中可用的 Microsoft.Extensions.Caching.Abstractions
扩展方法。
这非常有用,因为我可以同时定义函数和到期日期。
但是使用令牌,在请求完成之前,我不会知道 expires in x 秒值。 我想通过根本不缓存令牌来说明价值不存在的用例。
我已经尝试了以下
var token = await this.memoryCache.GetorCreateAsync<string>("SomeKey",async cacheEntry =>
{
var jwt = await GetTokenFromServer();
var tokenHasValidExpireValue = int.TryParse(jwt.ExpiresIn,out int tokenExpirationSeconds);
if (tokenHasValidExpireValue)
{
cacheEntry.AbsoluteExpirationRelativetoNow = TimeSpan.FromSeconds(tokenExpirationSeconds);
}
else // Do not cache value. Just return it.
{
cacheEntry.AbsoluteExpirationRelativetoNow = TimeSpan.FromSeconds(0); //Exception thrown. Value needs to be positive.
}
return jwt.token;
}
如您所见,当我尝试将过期时间设置为 TimeSpan.FromSeconds(0)
时会引发异常。
除了分别调用 Get
和 Set
方法之外,还有其他方法吗?
如果可能,我想使用 GetOrCreateAsync
方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。