2010-12-09 5 views
2

Meine Anwendung wird in einer gemeinsam genutzten Hostingumgebung ausgeführt. Ich habe einen eigenen App-Pool für meine App. Ich habe einige Tests mit den ersten Besuchen und der Vorkompilierung durchgeführt und habe festgestellt, wann meine Anwendung gestartet und heruntergefahren wird.IIS-Anwendungspool starten, herunterfahren und recyceln

In meinem Global.asax habe ich einige Protokollierungscode in Application_Start und Application_End. Ich kann von meinen Protokollen im Allgemeinen sehen, wenn die Anwendung im Leerlauf ist und heruntergefahren wird, dann besucht jemand und es beginnt wieder.

Aber ich sehe auch Fälle, in denen eine Abschaltung protokolliert wird und dann von einer weiteren Abschaltung etwa 13 Minuten später folgt; ohne einen Start in der Mitte.

Ich sehe auch Fälle, in denen zwei Startups in einer Reihe sind. Ich vermute, dass dies ein Recycling sein könnte, aber warum sollte es keinen Shutdown-Log-Eintrag geben?

Was würde ich gerne wissen, wenn es eine bessere Möglichkeit gibt, zu verfolgen, wann meine Anwendung startet, wann sie heruntergefahren wird und ob sie aufgrund eines Leerlaufpools oder eines Recyclings heruntergefahren wird. Ich habe keinen Zugriff auf das Windows-Ereignisprotokoll, daher muss ich dies, wenn möglich, über meine App tun.

Antwort

3

Application_Start und Application_End sollten in Ihrer Anwendung nur einmal pro Lebenszeit aufgerufen werden, MSDN confirms this.

Ohne Ihre Hosting-Umgebung zu kennen, ist es möglich, dass Ihr Webhost Ihre Website über mehrere Worker-Pools oder IIS-Instanzen ausführt. Ihr Anwendungspool könnte auch unerwartet aufgrund anderer Apps im Pool abstürzen.

Ohne Zugriff auf das Ereignisprotokoll oder irgendetwas anderes als ein einfaches Web-Host-Kontrollfeld ist Ihre beste Art der Protokollierung, was Sie jetzt tun, mit Global.ASAX