【问题标题】:Application Initialization Module for IIS 7.5 issueIIS 7.5 问题的应用程序初始化模块
【发布时间】:2012-10-26 14:24:47
【问题描述】:

作为概念验证的一部分,利用 IIS 7.5 的应用程序初始化模块来提高 Web 应用程序的初始化速度,我创建了一个托管在启用 SSL 的 IIS 7.5 (Windows Server 2008 R2) 上的简单 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>

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

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

【问题讨论】:

    标签: ssl initialization iis-7.5


    【解决方案1】:

    (我知道,这是一个陈旧的问题,但没有答案,并且出现在我自己的 Google 搜索中。)

    请参阅以下来自 Microsoft 支持的文章: Application Initialization module fails when web site requires 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 请求”解释为严格意义上的非安全请求。

    【讨论】:

    • 谢谢,这让我省去了很多挫折!
    • @AaronD 不客气。很高兴它帮助了其他人!
    • @ChrisW.Rea 真是个聪明的主意。谢谢!
    • 对我来说失败了,我只使用 http 端口 80 绑定。没有意义。可能是因为它是网站下面的网络应用程序,所以存在一些问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2011-07-26
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多