Как вынудить HttpWebRequest использовать кэш в среде ASP.NET?

В моем приложении 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?

7
задан piotrsz 13 May 2010 в 12:06
поделиться

2 ответа

Я могу ошибаться, но подозреваю, что HttpWebRequest уважает заголовки кэша с ресурса независимо от заявленных вами желаний.

Проверьте заголовки ответов и убедитесь, что ресурс явно не запрашивает кэширование.

0
ответ дан 7 December 2019 в 18:40
поделиться

Вы можете использовать кэш вручную в своем коде следующим образом:

 Cache.Insert("request", req, Nothing, DateTime.Now, TimeSpan.FromSeconds(30), TimeSpan.Zero)

Вы можете использовать этот метод, как если бы вы использовали кеширование в web.config.

1
ответ дан 7 December 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: