2013-10-02 15 views
8

In esecuzione su Windows 8, ho abilitato la funzionalità Application Initialization di IIS dalle opzioni di installazione delle funzionalità di Windows per IIS.Inizializzazione applicazione IIS non attiva nell'applicazione ASP.NET

Sto tentando di avviare immediatamente un'app Web ASP.NET e di avviarla in Application_Start quando viene riavviato il pool di applicazioni. Ho seguito le istruzioni da this tutorial, ma dopo aver impostato i valori in ApplicationHost.config, e web.config vedo che non sta sparando nulla.

Ecco quello che ho impostato (che sembra corrispondere a ciò che l'articolo suggerisce):

<applicationPools> 
     <add name="MPress" autoStart="true" 
      enable32BitAppOnWin64="true" 
    startMode="AlwaysRunning"> 
      <processModel identityType="LocalSystem" setProfileEnvironment="true" /> 
</applicationPools> 
<sites> 
    <site> 
    <application path="/MPress.Workflow.WebQueueMessageManager" 
       applicationPool="MPress" preloadEnabled="true"> 
       <virtualDirectory path="/" physicalPath="C:\Projects2010\Clients\MPress\MarvelPress.Workflow.WebQueueMessageManager" /> 
      </application> 
      <bindings> 
       <binding protocol="http" bindingInformation="*:80:" /> 
      </bindings> 
    </site> 
</sites> 

E poi nel web.config locale ho:

<system.webServer> 
<applicationInitialization remapManagedRequestsTo="Startup.htm" 
          skipManagedModules="true" 
          doAppInitAfterRestart="true"> 
    <add initializationPage="default.aspx" /> 
</applicationInitialization> 
</system.webServer> 

Altro che il doAppInitAfterRestart Contrassegnare questo corrisponde alle impostazioni nell'articolo di cui sopra, ad eccezione di indicare la mia app virtuale e il pool di applicazioni.

Sembra che il caricamento automatico del pool di applicazioni funzioni: se interrompo e riavvio IIS w3wp, vedo il pool di applicazioni visualizzato nell'elenco delle attività. Ma usando Process Explorer posso vedere che l'EXE non ha caricato .NET semplicemente seduto lì. Non sono state caricate DLL di .NET Runtime, quindi sembra che nessuna richiesta sia stata attivata.

Quello che veramente fa schifo è che non c'è una vera documentazione della sezione e dei valori attesi richiesti per ogni impostazione. Il flag doAppInitAfterRestart è documentato da nessuna parte che potrei trovare. L'ho lasciato anche con gli stessi risultati. Inoltre, non sono al 100% ciò che è la sintassi per l'URL. L'articolo MSDN punta a "/default.aspx" e ho provato anche questo senza alcun risultato.

Ho anche attivato la ricerca di richieste non riuscite in IIS per vedere se forse la richiesta falsa non riesce in qualche modo, ma non compare nulla. Sembra semplicemente che il carico a livello di sito non venga attivato al riavvio del pool di applicazioni.

Tutte le impostazioni menzionate qui sono disponibili anche tramite l'interfaccia utente di amministrazione di IIS in Windows 8 e tutto sembra certamente corretto.

Sono fuori di idee su cos'altro controllare o cosa potrei mancare. Qualche idea apprezzata.

risposta

5

Dopo un po 'di speleologia, risulta che nonostante avessi installato la funzionalità di inizializzazione dell'applicazione utilizzando le funzionalità di Windows 8, il modulo effettivo non è stato aggiunto all'elenco dei moduli globali.

Di seguito mancava e, una volta aggiunto tutto ha iniziato a lavorare bene:

<globalModules> 
     <add name="ApplicationInitializationModule" image="%windir%\System32\inetsrv\warmup.dll" /> 
</globalModules> 
2

ho affrontato problema simile, ma dopo aver fatto un po 'di confronto ho scoperto che è necessario impostare pool di applicazioni Managed modalità pipeline a Integrated. Non funzionerà con Classic Mode

Problemi correlati