Zum Thema dynamische Speicherung temporärer Bilder und Behandlung ihrer Bereinigung im Dateisystem eines Webservers: (mit C# in .NET 3.5).Verwendung und Geltungsbereich von global.asax (für Dateibereinigung nach Beendigung der Anwendung)
Es wurde vorgeschlagen, dass ich eine global.asax
Datei verwenden, um damit umzugehen.
Ich kann einfach nicht herausfinden, wie das Ding funktioniert.
Ich habe zwei separate Anwendungen ...
Ich habe herausgefunden, dass die global.asax im Stammverzeichnis der Website sein soll.
Fragen:
1) Wie bekomme ich die global.asax
für nur diese beiden spezifischen Anwendungen zu feuern.
2) Beide Anwendungen müssen eine Liste von Zeichenfolgen (die Dateispeicherorte) erstellen und sie dann beim Beenden der Anwendung löschen. Instantiiere ich dieses Array in der App oder in der global.asax
?
Mein Code sieht wie folgt aus:
List<string> fileLocations = new List<string>();
//I don't know where to put this.
//The next line of code will be in both applications (this could
//be called many times in one application session. The names of
//the files are generated from the clock (milliseconds and
//seconds combined, I might change this to use the actual
//random class combined with sessionID)
fileLocations.Add(file);
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
foreach(string file in fileLocations)
{
if(File.Exists(file))
File.Delete(file);
}
}
Ich bin verwirrt darüber, wie die global.asax tatsächlich funktioniert. Wird es wie eine Schnittstelle verwendet?
So gibt es keinen einfachen Weg, nur zu erkennen, wenn jemand mit einer Anwendung fertig ist und ein Bereinigungsskript ausführen? Ich denke, das sollte viel einfacher sein als es ist:/ – Dave
Nun, wenn der Benutzer angemeldet ist, dann können Sie das Session_End-Ereignis auch in Global.asax verwenden. Standardmäßig ist es 20 Minuten, aber Sie können Ihr eigenes Limit setzen. Siehe http://stackoverflow.com/questions/621744/how-to-handle-session-end-in-global-asax und http://justgeeks.blogspot.com/2008/07/aspnet-session-timeouts.html –
Ah, ok. Also, wenn ich eine Liste in der global.asax Datei deklariere, instanziiert sie eine neue Liste für jede Benutzersitzung, oder erkläre ich die Liste in meinem Programm und irgendwie hat der global.asax Zugriff darauf. Wie ich schon sagte, ich entschuldige mich für die grundlegenden Fragen ... Ich bin normalerweise ziemlich gut darin, dieses Zeug selbst zu finden, aber aus irgendeinem Grund ist das global.asax nicht sehr intuitiv für mich. – Dave