在我的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