为什么从其他实例调用Glav Web缓存时,我没有保存的数据?

时间:2018-11-22 03:29:31

标签: c# asp.net-mvc web-services caching

我尝试搜索自己的问题,但似乎没有人问我想问的问题。

我正在使用一种Web服务,该服务会生成一种令牌并将其从服务器发送到客户端,当前正在使用Glav CacheAdapter(Web缓存类型)

当有人请求数据调用时,服务器应生成一个令牌,然后将其保存到高速缓存中,然后将密钥发送给客户端,然后客户端应将相同的令牌发送至服务器,并应使用一个令牌进行检查在缓存中,但是以某种方式在服务器生成密钥时成功地创建并保存了一个密钥(我在调试时进行了测试),但是在客户端调用发送令牌时(它是相同的),但是以某种方式缓存中不包含任何数据。

Overview of the project

>>>> 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; 
    }    
}

我使用的缓存类型是否错误,或者可能是我没有意识到是错误的错误? 当我创建相同类的新实例时,缓存是否在那些对象之间共享?

我真的不确定缓存的工作原理如何,任何有关参考阅读材料的指针也将有所帮助。

谢谢。

0 个答案:

没有答案