我正在调用 REST Web 服务,而移动应用程序正在从其缓存中检索结果,而不是转到服务器。
我已经看到了其他建议的修复(类似的问题和类似的问题2 ),但 Cache 属性在 silverlight 4 中不可用。
有谁知道如何强制 windows phone 7 上的 silverlight 4 发出请求而不命中缓存?
虽然不理想,但一个简单的解决方案是发送带有值的“垃圾”字段DateTime.Now
。这样,一个值总是全新的,永远不会被缓存。如果您在标准查询中执行此操作,例如:
"&junk=" + DateTime.Now;
在与 StackApps 交谈的溢出 7 中,我也遇到了这个问题——我唯一能想到的就是在 HTTP/REST 请求的末尾添加一个随机变量。
建议最多的解决方案与威廉梅拉尼的相同。但这并不理想,一些服务拒绝带有未知参数或任何参数的请求。在这种情况下,使用 IfModifiedSince 标头会更干净、更可靠,如下所示:
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();
wc.DownloadStringCompleted += wc_DownloadStringCompleted;
wc.DownloadStringAsync(new Uri(bitstampUrl));
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();
为我工作