В моем приложении ASP.NET я использую HttpWebRequest для извлечения внешних ресурсов, которые я хотел бы кэшировать. Рассмотрим следующий код:
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?