Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Application End für ASP.net Seite
CSharperUser
myCSharp.de - Member



Dabei seit:
Beiträge: 80

Themenstarter:

Application End für ASP.net Seite

beantworten | zitieren | melden

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?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von CSharperUser am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.826

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
CSharperUser
myCSharp.de - Member



Dabei seit:
Beiträge: 80

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Grumbler85
myCSharp.de - Member



Dabei seit:
Beiträge: 538
Herkunft: Rheingau Taunus

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

beantworten | zitieren | melden

Zitat
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
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.170
Herkunft: Trier -> München

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers