如何为 Windows Phone 应用程序的异步 HTTPWebRequest 禁用缓存?

How to disable cache for asynchronous HTTPWebRequest for Windows Phone application?

我正在使用 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;

代码可以很好地获取结果。只是我在清除缓存时遇到问题。我是否通过将 "no-cache" 添加到 header 来正确地实现它?或者我错过了什么?它也应该添加到 header 吗?做我的救星!!

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