2013-04-18 10 views
12

Ok, quindi sono fondamentalmente nel processo di implementazione di warmups in azzurro utilizzando il nuovo modulo di inizializzazione delle applicazioni di IIS 8.0.Attività di avvio di Appcmd di Azure, impostazione preloadEnabled per TUTTI i siti

Ho un task di avvio (file cmd) che in pratica cancella già il timeout di inattività in IIS e il tempo di riciclo. Sto cercando di aggiungere l'inizializzazione dell'applicazione a questo.

Mi rendo conto che ho bisogno di impostare due cose; startMode e preloadEnabled.

La mia applicazione ha numerosi siti in IIS (circa 10), tutti nominati in modo casuale da Azure con i propri pool di applicazioni a caso.

startMode è facile, come che può essere impostato come un pool predefinito applicazioni facendo:

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

che lo applica a tutti i pool di applicazioni.

Tuttavia, non è così semplice con preloadEnabled.

Per impostare preloadEnabled, è possibile utilizzare questo per un sito denominato:

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

ma ho bisogno di applicare a TUTTI siti che non so il nome di (sono casuali) , tipo di default (come ho impostato startMode).

Qualche idea?

+0

Hai provato che uno: 'appcmd.exe set config -sezione: system.applicationHost/siti /applicationDefaults.preloadEnabled:"True"/commit: apphost' – astaykov

+0

@astaykov preloadEnabled non è un'opzione impostazioni predefinite del sito, può essere impostato solo per sito (l'ho provato, ha detto che tale impostazione non esisteva – mattytommo

+0

Nella propria architettura, si aggiungono dinamicamente siti o i siti vengono corretti quando si crea il pacchetto del servizio cloud e quando si distribuisce, non vengono apportate modifiche (ovvero non vengono aggiunti o rimossi nuovi siti)? – astaykov

risposta

10

Dopo una giornata di ricerca, ho finalmente capito. Fondamentalmente usa un loop in appcmd usando i comandi pipe to chain (un po 'come un ciclo for). Eccolo:

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

Quando lo utilizzo ottengo: Publish-AzureServiceProject: BadRequest: le istanze del ruolo sono state riciclate un numero di volte durante un'operazione di aggiornamento o di aggiornamento . nuovo ver La configurazione del servizio o le impostazioni di configurazione fornite quando configurazione del servizio impediscono l'esecuzione delle istanze di ruolo.Verificare che il codice non crei eccezioni non gestite e che le impostazioni di configurazione siano corrette e quindi avviare un altro aggiornamento o operazione di aggiornamento. –

0

Per quelli ancora in IIS 7.5:

+0

Puoi aiutarmi a mostrare come farlo tramite la riga di comando? –

0

Per IIS 8.5, per impostare, il preload presso l'applicazione livello (non a livello di sito) utilizzando appcmd, deve essere utilizzato il seguente comando.

appcmd set app "Default Web Site/ApplicationName" /preloadenabled:true 
Problemi correlati