En mi aplicación ASP.NET utilizo HttpWebRequest para buscar recursos externos que me gustaría almacenar en caché. Considere el siguiente código:¿Cómo forzar a HttpWebRequest a utilizar el caché en el entorno 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 utiliza caché de IE, así que cuando lo ejecuto como usuario normal (en aplicación de prueba cmd minúscula), los datos se almacenan en caché a %userprofile%\Local Settings\Temporary Internet Files
y siguientes respuestas se leen desde la memoria caché.
Pensé que cuando dicho código se ejecuta dentro de la aplicación ASP.NET, los datos se almacenarán en caché en ...\ASPNET\Local Settings\Temporary Internet Files
pero no lo es y la caché nunca se usa.
¿Qué estoy haciendo mal? ¿Cómo forzar a HttpWebRequest a usar el caché en el entorno ASP.NET?
Lo que cuenta es su aplicación ASP.NET ejecutando bajo? El caché se creará bajo esa cuenta. – feroze
@feroze: la aplicación se está ejecutando en una cuenta ASPNET y conozco la ruta temporal de los archivos de Internet al examinar Environment.SpecialFolder.InternetCache. El problema no es que no sé dónde se crean las entradas de caché, pero no se crean en absoluto. – piotrsz
Puede agregar una línea para cerrar y deshacerse del objeto de respuesta: resp.Close(); y luego verifica si sigues teniendo problemas? – feroze