0

外部の検索プロバイダーの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;
}
4

1 に答える 1