Warum AppDomain.CurrentDomain.GetAssemblies() nicht zurück abhängigen Assemblys im Globalen.asax unter bestimmten Bedingungen?

BEARBEITEN: Dies wurde zuvor mit dem Titel "App Init Verhalten unterscheidet sich zwischen IIS neu Starten und Anwendungs-Initialisierung". Ich habe den Titel geändert zu erweitern, die Frage von IIS/Anwendung Initialisieren, weil das beobachtete Verhalten bezieht sich auf AppDomain.CurrentDomain.GetAssemblies();

Ich bin mit dem IIS Application-Initialisierung-Modul warm-up eine asmx-mi service.

Habe ich umgesetzt, einige warm-up-code, um die app-Anwendung die Initialisierung erfolgreich JIT ist mein asmx service im Allgemeinen.asax Application_Start-Ereignis. Dieses System verwendet.- Laufzeit.CompilerServices.RuntimeHelpers.PrepareMethod() zu iterieren durch alle Baugruppen in der Anwendung (es nimmt auch alle von der Versammlung Abhängigkeiten), um sicherzustellen, dass der erste Aufruf der service ist so schnell wie möglich.

Wenn ich obeserve dieses Verhalten nutzen "net stop w3svc & net start w3svc" ich kann sehen, (über die Anmeldung), die ALLE Baugruppen sind JIT bemerkt und den ersten Aufruf der service ist schnell, wie erwartet.

Jedoch, wenn der Anwendungspool wird automatisch recycelt auf den konfigurierten Zeitplan (03:00:00) das log zeigt nur die direkt referenzierten Assemblys sind JIT bemerkt, nicht die Abhängigkeiten, die sich im Ordner.

Dies führt zu einer unzumutbaren Aufwand auf dem ersten Aufruf der service.

App Init führt genau wie erwartet, im übrigen aber warum hat der IIS-re-cycle von den Anwendungspool nur JIT-kompilieren, die direkt referenzierten Assemblys und nicht seine Abhängigkeiten?

InformationsquelleAutor Redeemed1 | 2013-09-06
Schreibe einen Kommentar