c# - WinRT HttpClient 问题

标签 c# web-services rest windows-runtime windows-phone-8.1

我遇到了一个让我抓狂的问题。我搜索了几个小时没有任何运气的答案。 我正在开发一个 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();

这工作正常,并返回正确的数据。然后我执行以下操作:

  1. 离开显示数据的页面
  2. 手动更改Webservice数据库中的部分数据
  3. 导航回页面

我现在希望它能提取我在步骤 #2 中更改的新数据,但它仍会返回初始数据。 如果我在网络浏览器中输入“my_secret_uri”,它会正确显示修改后的数据。 如果我停止应用程序并再次启动它,它也会正确显示修改后的数据。

就好像只要应用程序运行,最初拉取的数据就会被缓存。

知道哪里出了问题吗?

最佳答案

Windows Phone 有一个非常激进的网络缓存。除非您的服务器显式设置缓存持续时间 header ,否则它将直接从缓存中返回所有具有相同 Uri 的请求,甚至无需联系您的服务器。

您可以通过以下方式关闭此行为:

  1. 设置缓存持续时间 header (缓存控制:无缓存等)。
  2. 将随机数添加到您的请求查询字符串中。

关于c# - WinRT HttpClient 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28005701/

相关文章:

java - 严重 : Exception starting filter CORS

web-services - JSON 更改 Rails 3 中的日期格式

api - CakePHP 3 REST API 身份验证,同时仍使用现有 Controller

rest - 外部子系统故障的最佳 HTTP 代码

c# - wpf-单击按钮时动态创建新文本框和文本 block 并将其添加到网格行

c# - 实体删除前的 Dynamics CRM 自定义工作流程

来自未声明为线程安全的多个线程的java调用函数

mongodb - 如何在 REST API 中管理数据库版本

c# - 仅某些字符的正则表达式

c# - 未将对象引用设置为对象的实例(将列表映射到自动映射器)