我们有一个 Web 应用程序,它调用外部搜索提供程序的 url 来加载搜索结果。每次我们的页面被点击时,它都可以传入一个当前页码。此页码包含在发送给第 3 方的 url 中。我注意到,虽然他们报告了 45 页的结果,但如果我转到包含他们结果的一个页面,然后尝试导航到另一个包含其他结果的页面,则会加载来自第一页的相同结果。
我尝试设置我的 HttpWebRequest 对象以禁用缓存,但我尝试过的一切似乎都不起作用。而且,考虑到由于页码每次 url 都会发生变化,我不认为这真的是一个缓存问题。但这就是有趣的地方。
如果我复制我在代码中检索的 url 并将其粘贴到 chrome 中,它会加载正确的结果。然后我刷新 Web 应用程序页面,它现在也加载了该页面的结果。这对我来说毫无意义。该代码在本地运行,但由于它在 asp.net 中运行,因此它没有使用 chrome 来创建 Web 请求,那么为什么会发生这种情况呢?
这是我调用 url 并返回结果的代码。
public static string FetchPage(string url)
{
//Specify the encoding
Encoding enc = System.Text.Encoding.GetEncoding(1252);
HttpWebRequest.DefaultCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default); ;
//Create the http request
var request = (HttpWebRequest)WebRequest.Create(url);
request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
//Create the http response from the http request
var httpWebResponse = (HttpWebResponse)request.GetResponse();
//Get the response stream
var responseStream = new StreamReader(httpWebResponse.GetResponseStream(), enc);
//Read the response stream
string htmlStream = responseStream.ReadToEnd();
//Close the web response
httpWebResponse.Close();
//Close the response stream
responseStream.Close();
return htmlStream;
}