2013-10-02 138 views
8

在Windows 8上運行時,我已啓用IIS的Windows功能安裝選項中的IIS的Application Initialization功能。IIS應用程序初始化不會觸發ASP.NET應用程序

我試圖讓ASP.NET Web應用程序立即啓動並在應用程序池重新啓動時觸發Application_Start。我遵循this tutorial的指示,但是在設置ApplicationHost.config和web.config中的值之後,我看不到任何內容正在觸發。

下面是我設置(這似乎符合文章建議是什麼):

<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> 

然後在當地web.config中我有:

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

其他標誌與上述文章中的設置完全匹配,除了指向我的虛擬應用程序和應用程序池。

看起來應用程序池自動加載工作 - 如果我停止並重新啓動IIS w3wp我看到應用程序池顯示在任務列表中。但是使用Process Explorer,我可以看到EXE沒有加載.NET,只是坐在那裏。沒有.NET運行時DLL被加載,所以看起來沒有請求被觸發。

真正糟糕的是,沒有真正的文檔和每個設置所需的預期值。 doAppInitAfterRestart標誌在我找不到的地方記錄下來。我也留下了相同的結果。我也不是100%URL的語法。 MSDN文章指向「/default.aspx」,我也嘗試過,但無濟於事。

我也在IIS中打開了失敗的請求追蹤,看看假冒的請求是否失敗,但沒有任何顯示。它看起來像應用程序池重新啓動時,Site Level負載不會觸發。

這裏提到的所有設置也可以通過Windows 8的IIS管理界面進行訪問,並且一切看起來都正確。

我不知道還有什麼要檢查或我可能會丟失什麼。任何想法讚賞。

回答

5

經過一番探討後發現,儘管我已經使用Windows 8功能安裝了應用程序初始化功能,但實際的模塊並未添加到globalModules列表中。

下失蹤,並添加一次一切都開始工作得很好:

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

我遇到了類似的問題,但這樣做比較了一下後,我發現,你需要設置應用程序池託管管道模式到Integrated。它不會與Classic Mode