如何在WebClient和Windows Phone 7中禁用缓存

8
我正在调用一个REST Web服务,移动应用程序从其缓存中检索结果而不是访问服务器。
我已经看到其他建议的解决方法(similar issuesimilar issue2),但在Silverlight 4中没有可用的Cache属性。
有人有办法强制Windows Phone 7上的Silverlight 4发出请求而不命中缓存吗?

请注意,WP7使用的是Silverlight 3的变体,而不是4。 - Matt Lacey
4个回答

16

虽然不是理想的方案,但一种简单的解决方法是发送一个名为“junk”的字段和值DateTime.Now。这样,该值始终是全新的,不会被缓存。例如,如果您在标准查询字符串中执行此操作:

"&junk=" + DateTime.Now;

9
这样会更加干净:"?nocache=" + Environment.TickCount - bragboy

5

我在与StackApps通信时也遇到了这个问题-我能想到的唯一解决方法是在HTTP / REST请求的末尾添加一个额外的随机变量。


3
最常提出的解决方案与William Melani的相同。 但这并不理想,一些服务会拒绝带有未知参数或任何参数的请求。在这种情况下,更干净、更可靠的方法是使用IfModifiedSince头,如下所示:
    WebClient wc = new WebClient();
    wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();
    wc.DownloadStringCompleted += wc_DownloadStringCompleted;
    wc.DownloadStringAsync(new Uri(bitstampUrl));

0
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();

对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接