2012-10-26 7 views
7

Come parte di Proof of Concept che utilizza l'Application Initialization Module per IIS 7.5 per aumentare la velocità di inizializzazione delle app Web, ho creato una semplice applicazione Web ospitata su IIS 7.5 (Windows Server 2008 R2) con SSL abilitato. Si prega di vedere le impostazioni globali e locali di seguito.Modulo di inizializzazione dell'applicazione per IIS 7.5

Se ho capito correttamente il funzionamento del modulo di inizializzazione dell'applicazione, mi aspetto che IIS invii una richiesta a appinit.aspx (https://localhost/alwaysrunning/appinit.aspx) per inizializzare l'applicazione web. Questo comunque non sta mai succedendo.

Qualche idea?

Qual è lo scopo della pagina di inizializzazione dell'attributo?

Qualsiasi aiuto con questo sarebbe molto apprezzato.

MODIFICA: Quando disattivo SSL, il modulo di inizializzazione dell'applicazione invia una richiesta a appinit.aspx come previsto. Ho bisogno di farlo funzionare con SSL abilitato però.

Zen

Impostazioni globali nel file 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> 

impostazioni locali nel file web.config dell'applicazione:

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

risposta

4

(lo so, stantio domanda, ma è senza risposta & è venuto nel mio Googl Ricerca nell'oggetto.)

Consultare il seguente articolo del supporto Microsoft: Application Initialization module fails when web site requires SSL (KB2843964). Citazione:

Causa

Questo comportamento legato alla progettazione.

Risoluzione

Per aggirare questa limitazione, si può considerare consentendo HTTP (deselezionare il "Richiedi SSL" impostazione in Gestione IIS/Impostazioni SSL) e utilizzare un URL regola riscrittura di reindirizzare le richieste HTTP a HTTPS con l'eccezione del la richiesta proveniente dal modulo di riscaldamento:

<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 "Questo comportamento è di design." Sigh. Purtroppo, i risultati di ricerca principali che ho trovato su questa funzionalità di inizializzazione dell'applicazione non menzionano questa limitazione — a meno che non si interpreti "richiesta HTTP" come significato strettamente non richieste sicure.

+1

Grazie, mi ha salvato un sacco di frustrazione! –

+0

@AaronD Prego. Sono contento che abbia aiutato qualcun altro! –

+0

@ ChrisW.Rea Che idea intelligente. Grazie! – UncleZen