IIS 7.5应用程序初始化(预热)和HTTPS

IIS 7.5应用程序初始化(预热)和HTTPS,iis,iis-7,iis-7.5,Iis,Iis 7,Iis 7.5,我们已经在IIS7.5中使用应用程序初始化模块很长一段时间了,它一直工作得很好 然而,我们刚刚开始实施SSL,它似乎与预热产生了冲突。我做了很多研究,但到目前为止还没有解决方案 基本上,问题在于初始化模块不遵循重定向。我们必须为站点的某个部分启用http,但我们确实会将所有其他http访问重定向到它们的HTTPS等效项。我已经使用重写规则解决了这个问题,该规则向https页面抛出302。初始化接收到302,但忽略它 我尝试过的解决方案: 应用程序预热服务器变量 这一条最有意义。只要{APP_wa

我们已经在IIS7.5中使用应用程序初始化模块很长一段时间了,它一直工作得很好

然而,我们刚刚开始实施SSL,它似乎与预热产生了冲突。我做了很多研究,但到目前为止还没有解决方案

基本上,问题在于初始化模块不遵循重定向。我们必须为站点的某个部分启用http,但我们确实会将所有其他http访问重定向到它们的HTTPS等效项。我已经使用重写规则解决了这个问题,该规则向https页面抛出302。初始化接收到302,但忽略它

我尝试过的解决方案:

应用程序预热服务器变量

这一条最有意义。只要{APP_warning_UP}返回1,我就可以让重写规则忽略每个请求。根据文档,只要初始化仍在运行,该值就设置为1。不幸的是,这根本不起作用,因为{APP_warning_UP}总是简单地返回一个空字符串。也许这是7.5的限制?(请参见下面我的重写规则。)

将初始化页面更改为HTTPS版本

目前它的配置如下:

    <applicationInitialization remapManagedRequestsTo="Warmup.htm" skipManagedModules="true" doAppInitAfterRestart="true">
        <add initializationPage="/WarmUp?id=1" />
    </applicationInitialization>

这是我的重写规则,基本上是整个折磨的罪魁祸首。这是唯一的一个

<rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{APP_WARMING_UP}" pattern="1" negate="true" />
        <add input="{REQUEST_URI}" pattern="/services" negate="true" />
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" logRewrittenUrl="true" />
    <serverVariables>
        <set name="SKIP_MANAGED_MODULES" value="0" />
    </serverVariables>
</rule>

有人能帮忙吗?

这可能会有帮助。该模块似乎不适用于需要SSL的站点。看见我猜这个模块是http请求而不是https


您可能希望创建一个允许http且不重定向到https的页面。

这太完美了!他们的解决方案基本上是我的应用程序预热,但他们通过测试用户代理及其源IP来检测应用程序初始化模块。我应该想到这一点。(所以我不必制作一个接受http的页面,我只需要更改重写规则就可以了。)这也证实了{APP_warning_UP}不适用于IIS7.5。他们应该将其添加到文档中。