2013-04-18 3 views
12

Okay, also ich bin im Begriff, Azure Warmups mit dem neuen IIS 8.0 Application Initialization Modul zu implementieren.Azure Appcmd Startaufgabe, Einstellung preloadEnabled für alle Standorte

Ich habe eine Startup-Task (Cmd-Datei), die im Grunde bereits das Idle-Timeout in IIS und die Wiederverwertungszeit abbricht. Ich versuche, eine Anwendungsinitialisierung hinzuzufügen.

Ich realisiere, dass ich zwei Dinge setzen muss; startMode und preloadEnabled.

Meine Anwendung verfügt über zahlreiche Websites in IIS (ca. 10), die alle zufällig von Azure mit ihren zufällig ausgewählten Anwendungspools benannt wurden.

startMode ist einfach, da das können, indem Sie als Anwendungspool Standard festgelegt werden:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.startMode:AlwaysRunning 

dass es auf allen Anwendungspools gilt.

Allerdings, es ist nicht so einfach mit preloadEnabled.

preloadEnabled einzustellen, können Sie diese verwenden, für eine benannte Stelle:

%windir%\system32\inetsrv\appcmd set config -section:sites [name='MySite'].applicationDefaults.preloadEnabled 

Aber ich muss es alle Websites anwenden, die ich weiß nicht, den Namen (sie sind zufällig) , eine Art Standard (wie ich startMode eingestellt habe).

Irgendwelche Ideen?

+0

haben Sie versucht, dass man: 'appcmd.exe set config -Abschnitt: system.applicationHost/sites /applicationDefaults.preloadEnabled:"True“/commit: apphost' – astaykov

+0

@astaykov preloadEnabled keine Option auf Website-Standardeinstellungen können nur pro Website festgelegt werden (Ich habe es versucht, es wurde angegeben, dass diese Einstellung nicht vorhanden ist – mattytommo

+0

In Ihrer Architektur fügen Sie dynamisch Websites hinzu oder Websites werden beim Erstellen des Cloud-Service-Pakets und beim Bereitstellen repariert. Es werden keine Änderungen vorgenommen (dh keine neuen Sites hinzugefügt oder entfernt)? – astaykov

Antwort

10

Nach einem Tag der Suche nach, ich habe es endlich. Es verwendet grundsätzlich eine Schleife in appcmd, indem die Pipe Befehle zusammenführt (ähnlich wie eine for Schleife). Hier ist sie:

%systemroot%\system32\inetsrv\AppCmd.exe list app /xml | %windir%\system32\inetsrv\appcmd set site /in -applicationDefaults.preloadEnabled:True 
+0

Wenn ich dies verwende, bekomme ich: Publish-AzureServiceProject: BadRequest: Ihre Rollen Instanzen wurden mehrmals während einer Aktualisierung oder Upgrade-Vorgang recycelt neu ver sion Ihres Dienstes oder der Konfigurationseinstellungen, die Sie bei der Konfiguration des Dienstes durch bereitgestellt haben, verhindern, dass die Rolleninstanzen ausgeführt werden.Vergewissern Sie sich, dass Ihr Code keine unbehandelten Ausnahmen enthält und dass Ihre Konfigurationseinstellungen korrekt sind, und starten Sie dann einen weiteren Aktualisierungs- oder Aktualisierungsvorgang. –

0

Für diejenigen, die noch auf IIS 7.5:

+0

Können Sie mir helfen, dies über die Befehlszeile zu zeigen? –

0

Für IIS 8.5, zu setzen, die preload bei der Anwendung Level (nicht auf Site Level) mit appcmd, sollte der folgende Befehl verwendet werden.

appcmd set app "Default Web Site/ApplicationName" /preloadenabled:true 
Verwandte Themen