Frage

ich war nur in der Lage zu lesen, dass ASP.NET Änderungen an bestimmten Dateien wie aspx-Dateien, DLLs und andere erkennt. Es wird mich neu zu starten, laufende Anfragen und neue Anforderungen mit den neuen Dateien zum Einsatz beenden.

Aber was in der Zeit von der ersten Datei geschieht beeing kopiert, bis die letzten ausgetauscht wurde? Wenn ich die erste DLL-Datei austauschen, dann kommt eine Anfrage in, aber die anderen DLL-Dateien sind in einer älteren Version - wird es nur zum Absturz? Wird asp.net für einige Sekunden warten und erst dann beginnt, sich neu nach X Sekunden keine (relevanten) Änderungen Datei?

Thx!

War es hilfreich?

Lösung

Sie haben 4 Fragen hier: Was in der Zeit von der ersten Datei geschieht bis zum letzten kopiert beeing ausgetauscht wurde - Es gibt eine festgelegte Zeit während .net, ob andere Dateien geändert wurden, um zu sehen wartet, bevor er startet die neue App-Domain mit der neuen dLL geladen.

Wenn ich die erste DLL-Datei austauschen, dann kommt eine Anfrage in, aber die anderen DLL-Dateien in einer älteren Version sind - wird es zum Absturz nur - Es hängt davon ab, welche Code-Änderungen sind in dem DLL . Wenn die neue dll fein mit altem Code ausführen kann, dann wird es in Ordnung sein. Aber wenn die Anwendungsdomäne die neue DLL dreht und dass neue dll ist abhängig von etwas, das noch nicht da ist ... ja dann wird es eine Ausnahme werfen.

ASP.NET für einige Sekunden warten und erst dann beginnt, sich neu nach X Sekunden keine (relevanten) Dateiänderungen -? Ja. Ich habe nicht in der Lage gewesen zu finden, wie lange diese Zeit ist. Aber in meiner persönlichen Erfahrung, es ist irgendwo in dem 1-2-Sekunden-Bereich.

Ich fand auch eine gute Erklärung hier auf Anwendungsdomäne und Nachladen von DLL: http://odetocode.com/Articles/305.aspx

  

Wenn Sie kopieren eine aktualisierte DLL in eine   Anwendung Unterverzeichnis ist, die   ASP.NET-Laufzeit erkennt es   neuer Code auszuführen. da ASP.NET   kann nicht die DLL in den bestehenden Swap   AppDomain, es beginnt eine neue AppDomain.   Die alte Anwendungsdomäne ist „drain   „Gestoppt, das heißt, bestehende Anfragen   fertig sind erlaubt die Ausführung und   sobald sie alle fertig sind die   AppDomain kann entladen. Das neue   AppDomain beginnt mit dem neuen Code und   beginnt alle neuen Anfragen nehmen.

     

Normalerweise, wenn eine DLL lädt in eine   Prozess, der Prozess sperrt die DLL und   Sie können die Datei nicht auf der Festplatte zu überschreiben.   Allerdings haben AppDomains ein Feature   als Schattenkopie bekannt, die erlaubt   Baugruppen zu bleiben entriegelt und   ersetzbar auf dem Datenträger.

     

Die Laufzeit initialisiert ASP.NET mit   Schattenkopie aktiviert für den Behälter   Verzeichnis. Die AppDomain kopiert jede   dll es aus dem bin-Verzeichnis muss   eine temporäre Speicherstelle vor dem Verriegeln   und Laden der DLL in den Speicher.   Schattenkopie ermöglicht es uns, jede zu überschreiben   DLL in dem Verzeichnis ist während einer   Update ohne das Web unter   Anwendung offline.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top