2015-02-17 4 views
5

Ich verwende IIS7.5, um meine Webanwendung automatisch zu laden (startMode="AlwaysRunning"), und ich möchte jetzt meine Cache-Daten vorab laden. Ich bin ein wenig verwirrt, weil obwohl zwei Ansätze identisch scheinen:Application_Start vs serviceAutoStartProviders

  1. Verwendung Application_Start in global.asax
  2. Verwendung serviceAutoStartProviders in IIS-Konfigurationsdateien

Sie scheinen eher überflüssig und das gleiche tun. Wenn ja, würde ich lieber Application_Start verwenden, als Code-Abhängigkeiten in IIS-Konfigurationsdateien zu erstellen. Irgendein Rat?

Antwort

3

Die Datei Application_Start in der Datei global.asax wird ausgelöst, wenn die Anwendung die erste Anforderung erhält (erster Benutzer oder Autostart). Daher wird sie nicht zum Starten der Site verwendet.

Verwenden serviceAutoStartProviders starten http://www.asp.net/whitepapers/aspnet4#0.2__Toc253429241

Das IIS Anwendung Warm-Up-Modul einfacher ist http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization

+0

Gut zu verwenden, das ist, was mich verwirrt, in der Regel dauert es eine erste Anfrage eine Website zu starten und somit Ursache Application_Start. Passiert es nicht automatisch wenn 'serviceAutoStartEnabled =" true "'? Ich verstehe nicht, wie 'serviceAutoStartProviders' passieren können, ohne dass' Application_Start' kurz davor oder danach passiert. – mmix

+0

Der Autostart sendet eine gefälschte Anfrage zum Starten der Website, dies wird den Application_Start auslösen. Sie können eine Initialisierungsseite festlegen, um beim Start eine andere Seite aufzurufen. –

+0

Um es ein bisschen mehr zu erklären, wenn 'serviceAutoStartProviders 'ausgeführt wird, aber' Application_Start' nicht bis zur ersten Anfrage, das bedeutet, dass im Autostart-Code noch kein Webanwendungskontext existiert, also 'HttpContext' nicht initialisiert wird, was bedeutet Es gibt kein globales Cache-Objekt, das für zwischengespeicherte Daten verwendet werden soll. Aber da ist es. Es bedeutet also, dass der Kontext lebendig ist, was bedeutet, dass App am Leben ist, was bedeutet, dass "Application_Start" passiert sein muss. – mmix

Verwandte Themen