在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>
Run Code Online (Sandbox Code Playgroud)
然后在本地web.config我有:
<system.webServer>
<applicationInitialization remapManagedRequestsTo="Startup.htm"
skipManagedModules="true"
doAppInitAfterRestart="true">
<add initializationPage="default.aspx" />
</applicationInitialization>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
除了指向我的虚拟应用程序和应用程序池之外,这与doAppInitAfterRestart标志不同,这与上面文章中的设置完全匹配.
似乎应用程序池自动加载工作 - 如果我停止并重新启动IIS w3wp,我看到应用程序池显示在任务列表中.但是使用Process Explorer我可以看到EXE还没有加载.NET就坐在那里.没有加载.NET运行时dll,因此似乎没有触发任何请求.
真正糟糕的是,没有关于每个设置所需的部分和期望值的真实文档.我无法找到doAppInitAfterRestart标志.我也把结果留下了同样的结果.我也不是100%URL的语法.MSDN文章指向"/default.aspx",我也试过这个也无济于事.
我还在IIS中启用了失败请求跟踪,以查看假请求是否可能以某种方式失败,但没有任何内容显示在那里.当应用程序池重新启动时,它看起来似乎没有触发站点级别加载.
此处提到的所有设置也可以通过Windows 8中的IIS Admin UI获得,一切看起来都是正确的.
我不知道还有什么要检查或者我可能缺少什么.任何想法都赞赏.
经过一些更深入的探讨之后,事实证明虽然我已经使用Windows 8功能安装了应用程序初始化功能,但实际模块未添加到globalModules列表中.
以下内容丢失了,一旦添加,一切都开始正常工作:
<globalModules>
<add name="ApplicationInitializationModule" image="%windir%\System32\inetsrv\warmup.dll" />
</globalModules>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |