We have been using the application initialization module with IIS 7.5 for a long time, and it always worked perfectly.
However, we just started to implement SSL and it seems that we have created a conflict with the warm-up. I have done quite a bit of research, but so far no solution has been found.
Basically, the problem is that the initialization module is not redirecting. We must support http for a specific part of the site, but we will redirect all other HTTP visits to their HTTPS equivalent. I solved this using a rewrite rule that returns 302 to the https page. Initialization gets this 302, but just ignores it.
The solutions I tried:
APP_WARMING_UP server variable
This question will make the most sense. I could just make a rewrite rule to ignore every request whenever {APP_WARMING_UP} 1 is returned. According to the documentation, this value is 1 while initialization is still in progress. This, unfortunately, does not work at all, because {APP_WARMING_UP} just returns an empty string at all times. Maybe this is a limitation from 7.5? (See My rewrite rule below.)
Change the initialization page to the HTTPS version
It is currently configured as follows:
<applicationInitialization remapManagedRequestsTo="Warmup.htm" skipManagedModules="true" doAppInitAfterRestart="true">
<add initializationPage="/WarmUp?id=1" />
</applicationInitialization>
I tried changing the URL to "https: // {HTTP_HOST} / Login / WarmUp? Id = 1" and even replaced {HTTP_HOST} with an absolute address, but both configurations completely disabled application initialization. It doesn't even make a page request anymore.
This is the module documentation:
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>
, ?