Dans mon application ASP.NET, j'utilise HttpWebRequest pour extraire les ressources externes que je souhaite mettre en cache. Considérez le code suivant:Comment forcer HttpWebRequest à utiliser le cache dans un environnement 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 utilise le cache IE, donc quand je le lance en tant qu'utilisateur normal (en minuscule application de test de cmd), les données sont mises en cache à %userprofile%\Local Settings\Temporary Internet Files
et les réponses suivantes sont lues à partir du cache.
Je pensais que lorsqu'un tel code est exécuté dans l'application ASP.NET, les données seront mises en cache à ...\ASPNET\Local Settings\Temporary Internet Files
mais ce n'est pas le cas et le cache n'est jamais utilisé.
Qu'est-ce que je fais mal? Comment forcer HttpWebRequest à utiliser le cache dans l'environnement ASP.NET?
Quel compte est votre application ASP.NET en cours d'exécution sous? Le cache sera créé sous ce compte. – feroze
@feroze: L'application fonctionne sous un compte ASPNET et je connais le chemin des fichiers Internet temporaires à partir de l'examen de Environment.SpecialFolder.InternetCache. Le problème n'est pas que je ne sais pas où les entrées de cache sont créées mais elles ne sont pas créées du tout. – piotrsz
Pouvez-vous ajouter une ligne pour fermer et disposer l'objet réponse: resp.Close(); puis vérifiez si vous rencontrez toujours des problèmes? – feroze