Nella mia app ASP.NET utilizzo HttpWebRequest per prelevare risorse esterne che vorrei memorizzare nella cache. Si consideri il seguente codice:Come forzare HttpWebRequest a utilizzare la cache nell'ambiente 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 utilizza cache di IE, così quando ho eseguito come utente normale (in minuscolo prova cmd app), i dati vengono memorizzati nella cache per %userprofile%\Local Settings\Temporary Internet Files
e successive risposte vengono letti dalla cache.
Ho pensato che quando tale codice viene eseguito all'interno dell'app ASP.NET, i dati verranno memorizzati nella cache su ...\ASPNET\Local Settings\Temporary Internet Files
ma non lo è e la cache non viene mai utilizzata.
Cosa sto facendo male? Come forzare HttpWebRequest ad utilizzare la cache nell'ambiente ASP.NET?
Qual è il tuo conto ASP.NET applicazione in esecuzione in? La cache verrà creata con quell'account. – feroze
@feroze: l'app è in esecuzione con account ASPNET e conosco il percorso dei file temporanei di Internet dall'esame di Environment.SpecialFolder.InternetCache. Il problema non è che non so dove vengono create le voci della cache ma non vengono create affatto. – piotrsz
È possibile aggiungere una linea per chiudere e disporre l'oggetto risposta: resp.Close(); e poi controlla se hai ancora problemi? – feroze