我有一个奇怪的问题。所以我在我的应用程序中对 Web 服务进行了几次调用,该服务以数据进行回复。但是,我使用的是基于令牌的登录系统,因此当用户第一次进入应用程序时,我会从 Web 服务获取一个令牌以登录该特定用户,并且该令牌仅返回该用户的详细信息。
我遇到的问题是,当用户更改时,我需要再次拨打电话,以获取新用户的详细信息,但使用 Visual Studio 的断点调试,它会显示新用户的令牌进行调用,但问题是当 json 获取时反序列化,就好像它仍然读取旧数据并反序列化,当我用新用户退出我的应用程序时它工作正常,所以它好像正在读取缓存值,但我不知道如何清除它?我确信正在进行新的调用,问题在于反序列化,但我尝试在再次反序列化之前清除这些值,但没有任何效果。我是否缺少 json 反序列化器的某些内容,如何清除其缓存值?
在这里,我拨打电话并将其设置为不缓存,因此每次都会拨打新电话:
client.Headers[HttpRequestHeader.CacheControl] = "no-cache";
var token_details = await client.DownloadStringTaskAsync(uri);
在这里我对结果进行反序列化,在此部分显示旧数据,因此“token_details”中显示的原始 json 是正确的,只有当我反序列化 token_details 时,它才会显示错误的数据。
反序列化 = JsonConvert.DeserializeObject(token_details);
我要反序列化的类是一个简单的类,这里没什么特别的,我什至尝试过创建构造函数,以便每次调用它时都会清除值。
public class test
{
public string status { get; set; }
public string name{ get; set; }
public string birthday{ get; set; }
public string errorDes{ get; set; }
public test()
{
status = "";
name= "";
birthday= "";
errorDes= "";
}
}
uri 在拨打电话之前:
{ https://whatever.co.za/token/?code=BEBCg==&id=WP7&junk=121edcd5-ad4d-4185-bef0-22a4d27f2d0c } - 旧电话
"UBCg==" - 旧回复
{ https://whatever.co.za/token/?code=ABCg==&id=WP7&junk=56cc2285-a5b8-401e-be21-fec8259de6dd } - 新电话
"UBCg==" - 新响应与旧调用相同
正如你所看到的,我每次调用时都附加了一个新的 GUID,但是在调用 downloadstringtaskasync 方法之前会读取新的 uri,但它会返回旧数据
- "&junk=" + Guid.NewGuid());