2012-11-05 14 views
5

Vedo che Microsoft ha rilasciato Application Initialization come parte di IIS 8.0. Sfortunatamente non è abilitato nel ruolo Web per impostazione predefinita. (Intendo dire che "Inizializzazione dell'applicazione" come funzione del ruolo del server Web non è abilitata.So che il ruolo Web ha IIS 8.)Installa automaticamente l'inizializzazione dell'applicazione in Azure Web Role (SDK v1.8, Windows Server 2012)

Qualcuno sa come posso abilitare questo da uno script di avvio ? Ho già un certo numero di script di avvio, ma non sono sicuro di come aggiungere una funzione di ruolo del server.

Il modulo stesso viene visualizzato in Server Manager in "Ruoli server" -> "Server Web (IIS)" -> "Server Web" -> "Sviluppo applicazioni" -> "Inizializzazione applicazione".

È un peccato che questo non sia abilitato di default in quanto sarà molto utile.

grazie

Kris

risposta

15

In primo luogo è necessario installare la funzionalità utilizzando un compito di avvio:

PKGMGR.EXE /iu:IIS-ApplicationInit 

E poi si' ll necessario configurare il sito in IIS (startMode e preloadEnabled):

public class WebRole : RoleEntryPoint 
{ 
    public override void Run() 
    { 
     using (var serverManager = new ServerManager()) 
     { 
      var mainSite = serverManager.Sites[RoleEnvironment.CurrentRoleInstance.Id + "_Web"]; 
      var mainApplication = mainSite.Applications["/"]; 
      mainApplication["preloadEnabled"] = true; 

      var mainApplicationPool = serverManager.ApplicationPools[mainApplication.ApplicationPoolName]; 
      mainApplicationPool["startMode"] = "AlwaysRunning"; 

      serverManager.CommitChanges(); 
     } 

     base.Run(); 
    } 

    public override bool OnStart() 
    { 
     // For information on handling configuration changes 
     // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357. 

     return base.OnStart(); 
    } 
} 

I wrote a blog post about this e si possono trovare a sample application on GitHub.

+0

C'è un motivo per cui hai scelto di sovrascrivere Run piuttosto che OnStart? –

+0

La classe ServerManager può essere trovata dall'assembly Microsoft.Web.Administration.dll. –

0

Il ruolo web assolutamente è installato IIS 8.0. Identificando il ruolo web su OSVersion = 3, verrà distribuita l'app su un'immagine Windows Server 2012 con IIS 8.0.

Se si intende la VM (Azure IaaS)? Quello che vorrei fare è iniziare da Windows Server 2012, desktop remoto, installare il server principale come desiderato, sysprep, catturare l'immagine. In questo modo puoi riutilizzarlo nella tua Image Gallery di Azure. Poi si può girare su molte macchine virtuali da questa immagine di base con IIS 8.0 già impostato/installato ecc

+1

Intendo che il modulo/funzione "Inizializzazione applicazione" del ruolo Server Web non è abilitato. Quindi sì, ha IIS 8, non ha abilitato Application Initialization. – krisdyson

+0

Quello che stai cercando può essere automatizzato usando Package Manager: http://www.iis.net/learn/install/installing-iis-7/installing-iis-7-and-above-on-windows-server-2008 -o-windows-server-2008-r2 oppure è possibile utilizzare PowerShell (in un'attività di avvio per il proprio ruolo Web) per aggiungere funzionalità al server: http://blogs.msdn.com/b/powershell/archive/2009/ 01/27/manage-server-features-with-powershell-cmdlets-on-windows-2008-server-r2-beta.aspx –

Problemi correlati