默认情况下,WP7中的HttpWebRequest缓存似乎已启用,如何将其关闭? 随机添加 param url +“?param =”+ RND.Next(10000)有效,但它非常棘手,我不确定它是否有效 与所有服务器。
答案 0 :(得分:19)
为了将来参考,这对我有用(由于项目要求,我无法使用其他查询参数):
HttpWebRequest request = HttpWebRequest.CreateHttp(url);
if (request.Headers == null)
{
request.Headers = new WebHeaderCollection();
}
request.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();
答案 1 :(得分:11)
对于 HttpClient (适用于Windows Phone)“Cache-Control”:服务器端的“no-cache”有时只能工作。而且我也不能将查询字符串随机值添加到RESTful api调用中。
来自@frno的解决方案效果很好,看起来像HttpClient:
client.DefaultRequestHeaders.IfModifiedSince = DateTime.UtcNow;
谢谢。
答案 2 :(得分:6)
你怎么知道这是电话,而不是服务器(或介于两者之间的代理)缓存?
你用Fiddler2(或同等版本)检查了这个吗?
您是否尝试过设置标头以禁用缓存? 类似的东西:
myRequest = (HttpWebRequest)WebRequest.Create(myUri);
myRequest.Headers["Cache-Control"] = "no-cache";
myRequest.Headers["Pragma"] = "no-cache";
答案 3 :(得分:1)
我们已经看到在Chrome中托管Silverlight的行为相同。
如果我们想要阻止缓存,我们会在请求网址中添加"?nocache=" + DateTime.Now.Ticks.ToString()
。
答案 4 :(得分:1)
我发现了3种方式
string uri =" http://host.com/path?cache=" + Guid.NewGuid()。ToString();
var __request = (HttpWebRequest)WebRequest.Create(url.ToString()); if (__request.Headers == null) __request.Headers = new WebHeaderCollection(); __request.Headers.Add("Cache-Control", "no-cache");
[AspNetCacheProfile("GetContent")] public ResultABC GetContent(string abc) { __request = (HttpWebRequest)WebRequest.Create(abc); return __request; }
并更新您的web.config
<system.web> <caching> <outputCache enableOutputCache="true" /> <outputCacheSettings> <outputCacheProfiles > <add name="GetContent" duration="0" noStore="true" location="Client" varyByParam="" enabled="true"/> </outputCacheProfiles> </outputCacheSettings> </caching> ... </system.web>
答案 5 :(得分:0)
添加随机数并不错,它会起作用。我用过Time(在ajax调用中)。被放在网址中的文件夹。
答案 6 :(得分:-2)
是的可能...... :)我花了一个星期的实验,答案很简单:
HttpWebRequest _webRequest = WebRequest.CreateHttp(_currentUrl);
_webRequest.AllowReadStreamBuffering = false
_webRequest.BeginGetResponse(_onDownload,
userState);