我们已经使用IIS 7.5的应用程序初始化模块已经有一段时间了,而且它总能完美运行.
但是,我们刚刚开始实施SSL,它似乎与热身产生了冲突.我做了很多研究,但到目前为止还没有解决方案.
基本上问题是初始化模块不遵循重定向.我们必须为网站的某个部分启用http,但我们会将所有其他HTTP访问重定向到其HTTPS等效项.我已经使用重写规则解决了这个问题,该规则向https页面抛出302.初始化接收到302,但忽略它.
我试过的解决方案:
APP_WARMING_UP服务器变量
这个最有意义.只要{APP_WARMING_UP}返回1,我就可以简单地使重写规则忽略每个请求.根据文档,只要初始化仍在运行,就会将其设置为1.遗憾的是,这根本不起作用,因为{APP_WARMING_UP}只是一直返回一个空字符串.也许这是7.5的限制?(参见下面的重写规则.)
将初始化页面更改为HTTPS版本
目前它的配置如下:
<applicationInitialization remapManagedRequestsTo="Warmup.htm" skipManagedModules="true" doAppInitAfterRestart="true">
<add initializationPage="/WarmUp?id=1" />
</applicationInitialization>
Run Code Online (Sandbox Code Playgroud)
我尝试将URL更改为"https:// {HTTP_HOST}/Login/WarmUp?id = 1",甚至将{HTTP_HOST}替换为绝对地址,但这两种配置似乎都完全禁用了应用程序初始化.它甚至不再提出页面请求.
这是关于模块的文档:
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization
这是我的重写规则,它基本上是整个考验的罪魁祸首.这是唯一的一个.
<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>
Run Code Online (Sandbox Code Playgroud)
有人能帮忙吗?