In meiner ASP.NET-App verwende ich HttpWebRequest zum Abrufen externer Ressourcen, die ich zwischengespeichert werden möchte. Betrachten Sie den folgenden Code ein:Wie erzwinge HttpWebRequest Cache in ASP.NET-Umgebung zu verwenden?
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 verwendet IE-Cache, so dass, wenn ich es als normaler Benutzer ausgeführt (in winzigen cmd Test app), werden die Daten zwischengespeichert %userprofile%\Local Settings\Temporary Internet Files
und nächste Antworten werden aus dem Cache gelesen.
Ich dachte, dass, wenn solcher Code in ASP.NET App ausgeführt wird, Daten in ...\ASPNET\Local Settings\Temporary Internet Files
zwischengespeichert werden, aber es ist nicht und Cache wird nie verwendet.
Was mache ich falsch? Wie erzwinge HttpWebRequest Cache in ASP.NET-Umgebung zu verwenden?
Welches Konto ist Ihre ASP.NET app unter fliessendem? Der Cache wird unter diesem Konto erstellt. – feroze
@feroze: Die App läuft unter ASPNET-Konto und ich kenne den Pfad für temporäre Internetdateien von der Untersuchung von Environment.SpecialFolder.InternetCache. Das Problem ist nicht, dass ich nicht weiß, wo Cache-Einträge erstellt werden, aber sie werden überhaupt nicht erstellt. – piotrsz
Können Sie eine Zeile hinzufügen, um das Antwortobjekt zu schließen und zu entfernen: resp.Close(); und dann überprüfe, ob du immer noch Probleme hast? – feroze