在 Windows 8 上运行,我从 IIS 的 Windows 功能安装选项中启用了 IIS的应用程序初始化功能。
我试图让 ASP.NET Web 应用程序立即启动并在应用程序池重新启动时触发 Application_Start。我已按照本教程中的说明进行操作,但在 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 我有:
<system.webServer>
<applicationInitialization remapManagedRequestsTo="Startup.htm"
skipManagedModules="true"
doAppInitAfterRestart="true">
<add initializationPage="default.aspx" />
</applicationInitialization>
</system.webServer>
除了 doAppInitAfterRestart 标志之外,这与上述文章中的设置完全匹配,只是指向我的虚拟应用程序和应用程序池。
应用程序池自动加载似乎有效 - 如果我停止并重新启动 IIS w3wp,我会在任务列表中看到应用程序池显示。但是使用 Process Explorer 我可以看到 EXE 并没有加载 .NET 只是坐在那里。没有加载 .NET 运行时 dll,因此似乎没有触发任何请求。
真正糟糕的是,没有关于每个设置所需的部分和预期值的真实文档。doAppInitAfterRestart 标志在我找不到的任何地方都没有记录。我也将其排除在外,结果相同。我也不是 100% 的 URL 语法是什么。MSDN 文章指向“/default.aspx”,我也尝试过,但无济于事。
我还在 IIS 中打开了 Failed Request Tracing 以查看假请求是否以某种方式失败,但那里没有任何显示。当应用程序池重新启动时,看起来站点级负载没有触发。
此处提到的所有设置也可通过 Windows 8 中的 IIS Admin UI 获得,并且一切看起来都正确。
我不知道还要检查什么或我可能会丢失什么。任何想法表示赞赏。