In meiner ASP.NET-Anwendung verwende ich HttpWebRequest zum Abrufen externer Ressourcen, die ich im Cache speichern möchte. Betrachten Sie den folgenden Code:
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 (in winzigen cmd Test app) ausführen, Daten in den Cache gespeichert werden %userprofile%\Local Settings\Temporary Internet Files
und die nächsten Antworten werden aus dem Zwischenspeicher gelesen.
Ich dachte, wenn solcher Code innerhalb einer ASP.NET-Anwendung ausgeführt wird, werden die Daten in den Cache ...\ASPNET\Local Settings\Temporary Internet Files
aber das ist nicht der Fall und der Cache wird nie benutzt.
Was mache ich falsch? Wie HttpWebRequest zu zwingen, Cache in ASP.NET-Umgebung verwenden?
0 Stimmen
Unter welchem Konto wird Ihre ASP.NET-Anwendung ausgeführt? Der Cache wird unter diesem Konto erstellt.
0 Stimmen
@feroze: Die Anwendung läuft unter dem ASPNET-Konto und ich kenne den Pfad zu den temporären Internetdateien, indem ich Environment.SpecialFolder.InternetCache untersuche. Das Problem ist nicht, dass ich nicht weiß, wo die Cache-Einträge erstellt werden, sondern dass sie überhaupt nicht erstellt werden.
0 Stimmen
Können Sie eine Zeile hinzufügen, um das Response-Objekt zu schließen und zu entsorgen: resp.Close(); und dann überprüfen, ob die Probleme weiterhin bestehen?