C# - 为什么我的HTTPWebRequest每次都返回一个缓存的响应?

时间:2013-09-03 23:41:07

标签: c# caching httpwebrequest

我已经看到了各种类似的问题,但没有任何帮助解决我的问题。这是我正在使用的代码片段:

NetworkCredential credentials = new NetworkCredential(CredentialsManager.Username, CredentialsManager.Password);

HttpWebRequest getReq = (HttpWebRequest) WebRequest.Create(m_editPageUrl);
getReq.CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache); // I've also tried RequestCacheLevel.NoCacheNoStore
getReq.Credentials = credentials;
getReq.Timeout = 1000;
getReq.Method = "GET";
getReq.Accept = "text/html";

string responseString;
using (HttpWebResponse getResponse = (HttpWebResponse) getReq.GetResponse())
{
    using (Stream responseStream = getResponse.GetResponseStream())
    {
        if (responseStream == null)
            throw new Exception("Did not receive a response from the specified page.");

        using (StreamReader reader = new StreamReader(responseStream))
            responseString = reader.ReadToEnd();
    }
}

出于某种原因,即使我已经告诉HTTPWebRequest绕过缓存,也会缓存存储在responseString中的内容。大约每小时,我得到一个更新的回复,但是如果我改变了什么,那么新的回复(现在应该是无效的,因为还有一个更新的版本)仍然传递给我。我被告知有良好的权限,服务器设置为不缓存响应,所以我一定做错了。我只是无法弄清楚是什么。

我在某处读到了使用套接字创建更低级别的加载器可能会有所帮助。但是,我找不到任何容易显示如何做到这一点的地方。如果这是我应该做的,请告诉我在哪里寻求帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

在对我的应用程序访问的服务器上托管的站点的代码进行一些挖掘时,我发现该站点有一个它维护的缓存服务。一旦禁用,一切都像魅力一样。我的原始代码工作正常。