Laden...

Application End für ASP.net Seite

Erstellt von CSharperUser vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.846 Views
C
CSharperUser Themenstarter:in
80 Beiträge seit 2010
vor 12 Jahren
Application End für ASP.net Seite

Hallo zusammen,

ich habe folgendes Problem:

Ich habe eine ASP.net Seite die eine Datenbankverbindung zu einer db4o Datenbank öffnet.
Beim Beenden, soll die Verbindung zu Datenbank geschlossen werden.

Ich habe versucht dies über die Funktion Application_End() in der Glabal.asax zu tun. Allerdings wird diese Funktion nie aufgerufen.

Wann wird dieses Event ausgelöst, bzw wie kann ich darauf reagieren?

16.830 Beiträge seit 2008
vor 12 Jahren

Hi,

wenn Du über ADO.NET die Verbindung erstellst musst Du Dich eigentlich nicht drum kümmern.
Dass Application_End nicht aufgerufen wird ist gut möglich, da der Applikation Pool die Anwendung abschießt, wenn sie zu lange im Idle Modus ist.

Grüße

C
CSharperUser Themenstarter:in
80 Beiträge seit 2010
vor 12 Jahren

Hallo Abt,
vielen Dank für Deine Antwort.

In diesem Fall ist es leider nicht so, dass die Verbindung automatisch geschlossen wird.
Gibt es andere Möglichkeiten darauf zu reagieren, wenn das Browserfenster geschlossen wird?

G
538 Beiträge seit 2008
vor 12 Jahren

Der Browser meldet das schließen einer Webseite nicht ohne weiteres an den Server.

Vielleicht kannst du die Verbindung schließen, nachdem du sie benutzt hast?

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

699 Beiträge seit 2007
vor 12 Jahren

Der Browser meldet das schließen einer Webseite nicht ohne weiteres an den Server.

Vielleicht kannst du die Verbindung schließen, nachdem du sie benutzt hast?

Nicht Vieleicht, sondern genau so muss das gemacht werden.
ASP.NET (HTTP-Protokoll), ist ein Statusloses Protokoll. Das bedeutet, das ein Browser sich nie am Server abmeldet. Der Browser schickt nur eine Anfrage an den Server "Möchte Seite X sehen" und der Server schickt dann die Seite zurück.

Baue die Verbindung zur Datenbank so spät wie benötigt auf, und beende die Verbindung so schnell als möglich. Packe am besten den Code zur Abfrage in ein Using. Dann kümmert sich die CLR um den nötigen Close Befehl.

Grüße
Stephan

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

siehe zum Thema DB-Verbindungen auch [Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen

Das Application_End-Event wird normalerweise gefeuert, wenn die Anwendung entladen wird (vom IIS), bzw. der Anwendungspool beendet wird.
Es gibt auch Events, die nach der Abarbeitung einer einzelnen Anfrage gefeuert werden. Aber die Datenbank solltest Du trotzdem nur bei Bedarf öffnen und gleich wieder schließen.
Ob ein Browserfenster noch offen ist, bekommst Du nicht zuverlässig mit - Man sollte bei Webanwendungen nie versuchen, das zu ermitteln um serverseitig zu reagieren. Es besteht in vielen Fällen auch kaum ein Unterschied zwischen "Fenster ist noch offen" und "Cookie ist noch da Fenster wird mit vorheriger URL neu geöffnet".

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca