【问题标题】:How to disable cache for asynchronous HTTPWebRequest for Windows Phone application?如何为 Windows Phone 应用程序的异步 HTTPWebRequest 禁用缓存?
【发布时间】:2015-07-17 08:18:50
【问题描述】:

我正在使用 Rest API 开发移动应用程序。我正在使用异步调用,因为 Windows Phone 8 开发不支持 GetResponse 方法。

当我启动应用程序时,它使用 GET 方法获取正确的数据。我已经实现了 60 秒的刷新间隔。当刷新触发时,我收到的 JSON 输出不是新的,而是最初获取的。基本上不会让人耳目一新。我浏览了这里的一些博客,发现这是缓存的问题。我需要有关禁用此缓存的帮助。另外,我检查并发现 HttpRequestCachePolicy 不能用作 System.Net.Cache 框架中不存在(我是开发新手,如果我在这里错了,请纠正我)

下面是我正在使用的代码。

请求创建:

string AuthServiceUri = "http://" + Authentication.ipAddress + "/api/alerts/open";
HttpWebRequest alerts_request = HttpWebRequest.Create(AuthServiceUri) as HttpWebRequest;
alerts_request.Accept = "application/json";
alerts_request.Method = "GET";
alerts_request.Headers["AuthToken"] = Authentication.authToken;
alerts_request.BeginGetResponse(new AsyncCallback(AlertsGetResponsetStreamCallback), alerts_request);

GetResponseStreamCallback:

HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);
response.Headers["Cache-Control"] = "no-cache";
string responseString = "";
Stream streamResponse = response.GetResponseStream();
StreamReader reader = new StreamReader(streamResponse);
responseString = reader.ReadToEnd();
streamResponse.Close();
reader.Close();
response.Close();
string result = responseString;

代码可以很好地获取结果。只是我在清除缓存时遇到了麻烦。我是否通过将“无缓存”添加到标题中来正确实现它?还是我错过了什么?它也应该添加到标题中吗?做我的救星!!

【问题讨论】:

  • 我认为您的术语在这里混淆了?我很确定您不能仅从 http 响应标头中清除浏览器缓存。要在浏览器中强制“不缓存”特定请求,请参阅stackoverflow.com/questions/49547/…
  • 我之前浏览过那个博客。但是,它不包含实现异步调用的答案。我知道我有点落后,因为我刚刚进入开发阶段。无论如何,我试图实现博客中的建议: response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate"; response.Headers["Pragma"] = "无缓存"; response.Headers["Expires"] = "0";还是没有金子:(

标签: c# caching windows-phone httpwebrequest no-cache


【解决方案1】:

最快的解决方法可能是在每次调用时修改 uri。这将绕过缓存。只需将“?dummy=345”之类的参数附加到您的 uri 并在每次调用时更改参数值 (345)。 这看起来像是缓存机制的新 uri,它将检索内容。

【讨论】:

  • 终于成功了!!!谢谢你,先生!我不能投票,因为我在这里没有 15 个声望点(今天加入)。但是,是的,这解决了我的问题。 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
相关资源
最近更新 更多