我尝试搜索自己的问题,但似乎没有人问我想问的问题。
我正在使用一种Web服务,该服务会生成一种令牌并将其从服务器发送到客户端,当前正在使用Glav CacheAdapter(Web缓存类型)
当有人请求数据调用时,服务器应生成一个令牌,然后将其保存到高速缓存中,然后将密钥发送给客户端,然后客户端应将相同的令牌发送至服务器,并应使用一个令牌进行检查在缓存中,但是以某种方式在服务器生成密钥时成功地创建并保存了一个密钥(我在调试时进行了测试),但是在客户端调用发送令牌时(它是相同的),但是以某种方式缓存中不包含任何数据。
>>>> Project A
>> Service
public string Generate()
{
AppServices.Cache.InnerCache.Add($"AuthenticationTokenCache:{xxx}", DateTime.Now.AddDays(1), new StringValue() { Value = xxx });
return key;
}
public bool Validate(string token)
{
return AppServices.Cache.InnerCache.Get<StringValue>($"AuthenticationTokenCache:{xxx}") != null;
}
>> WebAPI
public bool CallValidate(string token)
{
var xService = new Service();
return xService.Validate(token);
}
>>>> Project B
>> WebAPI
protected override bool RequestValidation(string token)
{
var client = new HttpClient();
var authURL = $"/api/CallValidate?token={token}";
var response = client.GetAsync(authURL).Result.Content;
string jsonContent = response.ReadAsStringAsync().Result;
var authResult = JsonConvert.DeserializeObject<bool>(jsonContent);
if(authResult)
{
return true;
}
}
我使用的缓存类型是否错误,或者可能是我没有意识到是错误的错误? 当我创建相同类的新实例时,缓存是否在那些对象之间共享?
我真的不确定缓存的工作原理如何,任何有关参考阅读材料的指针也将有所帮助。
谢谢。