IIS 7.5问题的应用程序初始化模块

Unc*_*Zen 7 ssl initialization iis-7.5

作为使用IIS 7.5的应用程序初始化模块来提高Web应用程序初始化速度的概念验证的一部分,我创建了一个在IIS 7.5(Windows Server 2008 R2)上托管并启用了SSL的简单Web应用程序.请参阅下面的全球和本地设置.

如果我正确理解应用程序初始化模块的工作方式,我希望IIS向appinit.aspx(https://localhost/alwaysrunning/appinit.aspx)发出请求以初始化Web应用程序.然而,这永远不会发生.

有任何想法吗?

属性initializationPage的目的是什么?

任何有关这方面的帮助将不胜感激.

编辑:当我禁用SSL时,应用程序初始化模块按预期向appinit.aspx发出请求.我需要让它在启用SSL的情况下工作.

applicationHost.config文件中的全局设置:

<add name="appinit" autoStart="true" startMode="AlwaysRunning">
    <recycling logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory">
        <periodicRestart requests="0" time="00:05:00">
            <schedule>
                <clear />
            </schedule>
        </periodicRestart>
    </recycling>
    <processModel identityType="NetworkService" idleTimeout="00:00:00" />
</add>

<application path="/alwaysrunning" preloadEnabled="true" applicationPool="appinit">
    <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\alwaysrunnig" />
</application>
Run Code Online (Sandbox Code Playgroud)

应用程序的web.config文件中的本地设置:

<applicationInitialization remapManagedRequestsTo="splashscreen.htm" skipManagedModules="true" >
    <add initializationPage="/appinit.aspx" />
</applicationInitialization> 
Run Code Online (Sandbox Code Playgroud)

Chr*_*Rea 5

(我知道,这个问题已经过时了,但它还没有得到解答,而且是在我自己的谷歌搜索中出现的。)

请参阅 Microsoft 支持的以下文章: 网站需要 SSL 时应用程序初始化模块失败 (KB2843964)。引用:

原因

此行为是设计使然。

解决

要解决此限制,您可以考虑启用 HTTP(取消选中 IIS 管理器/SSL 设置中的“需要 SSL”设置)并使用 URL 重写规则将 HTTP 请求重定向到 HTTPS,但来自预热模块的请求除外:

 <rewrite>
   <rules>
     <rule name="No redirect on warmup request (request from localhost with warmup user agent)" stopProcessing="true">
       <match url=".*" />
       <conditions>
         <add input="{HTTP_HOST}" pattern="localhost" /> 
         <add input="{HTTP_USER_AGENT}" pattern="Initialization" /> 
       </conditions> 
       <action type="Rewrite" url="{URL}" /> 
     </rule> 
     <rule name="HTTP to HTTPS redirect for all requests" stopProcessing="true"> 
       <match url="(.*)" /> 
       <conditions> 
         <add input="{HTTPS}" pattern="off" /> 
       </conditions> 
       <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> 
     </rule> 
   </rules> 
 </rewrite>
Run Code Online (Sandbox Code Playgroud)

一定喜欢“这种行为是设计使然的”。叹。遗憾的是,我发现的有关此应用程序初始化功能的热门搜索结果没有提及此限制 - 除非将“HTTP 请求”解释为严格意义上的非安全请求。