我遇到了一个让我抓狂的问题。我搜索了几个小时没有任何运气的答案。 我正在开发一个 WINRT/Windows Phone 8.1 应用程序,我在其中从以下代码调用 RESTful web 服务:
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = await httpClient.GetAsync(new Uri("my_secret_uri"));
string data = await response.Content.ReadAsStringAsync();
MessageDialog dialog = new MessageDialog(data);
await dialog.ShowAsync();
这工作正常,并返回正确的数据。然后我执行以下操作:
- 离开显示数据的页面
- 手动更改Webservice数据库中的部分数据
- 导航回页面
我现在希望它能提取我在步骤 #2 中更改的新数据,但它仍会返回初始数据。 如果我在网络浏览器中输入“my_secret_uri”,它会正确显示修改后的数据。 如果我停止应用程序并再次启动它,它也会正确显示修改后的数据。
就好像只要应用程序运行,最初拉取的数据就会被缓存。
知道哪里出了问题吗?
最佳答案
Windows Phone 有一个非常激进的网络缓存。除非您的服务器显式设置缓存持续时间 header ,否则它将直接从缓存中返回所有具有相同 Uri 的请求,甚至无需联系您的服务器。
您可以通过以下方式关闭此行为:
- 设置缓存持续时间 header (缓存控制:无缓存等)。
- 将随机数添加到您的请求查询字符串中。
关于c# - WinRT HttpClient 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28005701/