Application Initialization Module for IIS 7.5 issue

iis-7.5, initialization, ssl

Solution

(I know, stale question, but it's unanswered & came up in my own Google search on the subject.)

Refer to the following article from Microsoft Support: Application Initialization module fails when web site requires SSL (KB2843964). Quote:

Cause

This behavior is by design.

Resolution

To workaround this limitation, you may consider enabling HTTP (uncheck the "Require SSL" setting in IIS Manager/SSL Settings) and use a URL Rewrite rule to redirect HTTP requests to HTTPS with the exception of the request coming from the warmup module :

 <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>

Gotta love "This behavior is by design." Sigh. Sadly, the top search results I found about this Application Initialization feature fail to mention this limitation — unless one interprets "HTTP request" as strictly meaning non-secure requests.

Problem

As a part of Proof of Concept utilizing the Application Initialization Module for IIS 7.5 to increase the speed of web apps initialization, I have created a simple web application hosted on IIS 7.5 (Windows Server 2008 R2) with SSL enabled. Please see global and local settings below. If I understand correctly the way the Application Initialization Module works, I am expecting IIS to issue a request to appinit.aspx (`https://localhost/alwaysrunning/appinit.aspx`) to initialize the web application. This is however never happening. Any ideas? What is the purpose of the attribute initializationPage? Any help with this would be greatly appreciated. EDIT: When I disable SSL the Application Initialization Module issues a request to appinit.aspx as expected. I need to get this to work with SSL enabled though. Zen Global settings in the applicationHost.config file: ``` <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> ``` Local settings in application's web.config file: ``` <applicationInitialization remapManagedRequestsTo="splashscreen.htm" skipManagedModules="true" > <add initializationPage="/appinit.aspx" /> </applicationInitialization> ```

Original source