在我的ASP.NET應用程序中,我使用HttpWebRequest來獲取我想要緩存的外部資源。請看下面的代碼:如何強制HttpWebRequest在ASP.NET環境中使用緩存?
var req = WebRequest.Create("http://google.com/");
req.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.CacheIfAvailable);
var resp = req.GetResponse();
Console.WriteLine(resp.IsFromCache);
var answ = (new StreamReader(resp.GetResponseStream())).ReadToEnd();
Console.WriteLine(answ.Length);
HttpWebRequest的使用IE緩存,所以當我運行它作爲普通用戶(在微小的CMD測試程序),數據緩存到%userprofile%\Local Settings\Temporary Internet Files
和明年響應從緩存中讀取。
我認爲,當這樣的代碼是ASP.NET應用程序中運行,數據將被緩存到...\ASPNET\Local Settings\Temporary Internet Files
但它不是,並且永遠不會使用的緩存。
我做錯了什麼?如何強制HttpWebRequest在ASP.NET環境中使用緩存?
什麼帳戶下運行的ASP.NET應用程序?緩存將在該帳戶下創建。 – feroze 2010-05-13 20:49:06
@feroze:該應用程序在ASPNET帳戶下運行,我知道檢查Environment.SpecialFolder.InternetCache的臨時Internet文件路徑。 問題不在於我不知道緩存項的創建位置,而是根本不創建它們。 – piotrsz 2010-05-15 10:35:11
你可以添加一行來關閉並處理響應對象:resp.Close();然後檢查你是否仍然有問題? – feroze 2010-05-19 01:27:07