外部の検索プロバイダーのURLを呼び出して検索結果を読み込むWebアプリがあります。ページがヒットするたびに、現在のページ番号を渡すことができます。このページ番号は、サードパーティに送信されるURLに含まれています。45ページの結果が報告されているのに、結果が含まれているページの1つに移動してから、追加の結果がある別のページに移動しようとすると、最初のページと同じ結果が読み込まれることに気付きました。
キャッシュを無効にするように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;
}