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

8
作为利用IIS 7.5的应用程序初始化模块来增加Web应用程序初始化速度的概念验证的一部分,我创建了一个简单的Web应用程序,它托管在启用SSL的IIS 7.5(Windows Server 2008 R2)上。请参见以下全局和本地设置。
如果我正确理解应用程序初始化模块的工作方式,我期望IIS向appinit.aspx发出请求(https://localhost/alwaysrunning/appinit.aspx)以初始化Web应用程序。然而,这从未发生过。
有什么想法吗?
属性initializationPage的目的是什么?
非常感谢您的任何帮助。
编辑:当我禁用SSL时,应用程序初始化模块如预期地向appinit.aspx发出请求。但是我需要使其在启用SSL的情况下正常工作。
Zen
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>

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

<applicationInitialization remapManagedRequestsTo="splashscreen.htm" skipManagedModules="true" >
    <add initializationPage="/appinit.aspx" />
</applicationInitialization> 
1个回答

5
我知道这是一个老问题,但它没有得到答案,并且出现在我自己的谷歌搜索结果中。请参考微软支持中心的以下文章:应用初始化模块在网站需要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>

我真的很喜欢"这是设计行为"。叹气。可悲的是,我在搜索应用程序初始化功能的相关内容时,发现顶部搜索结果未提及此限制,除非将"HTTP请求"严格解释为非安全请求。


1
谢谢,这让我省了很多烦恼! - Aaron D
@AaronD 不用谢。很高兴能帮到其他人! - Chris W. Rea
@ChrisW.Rea 真是个聪明的想法。谢谢! - UncleZen
它对我来说失败了,而且我只使用了HTTP端口80绑定。毫无意义。也许因为它是一个网站下面的Web应用程序,所以有一些问题? - Triynko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接