2012-10-26 11 views
7

Als Teil des Proof of Concept, das das Application Initialization Module für IIS 7.5 zur Beschleunigung der Initialisierung von Webanwendungen verwendet, habe ich eine einfache Webanwendung auf IIS 7.5 (Windows Server 2008 R2) erstellt) mit SSL aktiviert. Bitte beachten Sie die folgenden globalen und lokalen Einstellungen.Anwendungsinitialisierungsmodul für IIS 7.5 Ausgabe

Wenn ich die Funktionsweise des Anwendungsinitialisierungsmoduls richtig verstehe, erwarte ich, dass IIS eine Anforderung an appinit.aspx (https://localhost/alwaysrunning/appinit.aspx) ausgibt, um die Webanwendung zu initialisieren. Dies geschieht jedoch nie.

Irgendwelche Ideen?

Was ist der Zweck des Attributs initializationPage?

Jede Hilfe mit diesem würde sehr geschätzt werden.

EDIT: Wenn ich SSL deaktivieren das Application Initialization Module eine Anfrage an appinit.aspx wie erwartet. Ich muss dies jedoch mit SSL-aktiviert arbeiten.

Zen

Globale Einstellungen in der Datei 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> 

Lokale Einstellungen in Anwendung web.config-Datei:

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

Antwort

4

(Ich weiß, abgestandene Frage, aber es ist unbeantwortet & kam in meinem eigenen Googl e Suche nach dem Thema.)

Siehe den folgenden Artikel von Microsoft Support: Application Initialization module fails when web site requires SSL (KB2843964). Zitat:

Ursache

Dieses Verhalten ist konstruktionsbedingt.

Auflösung

diese Einschränkung zu umgehen, Sie HTTP ermöglicht betrachten kann (deaktivieren die "SSL erforderlich" in IIS Manager/SSL-Einstellungen Einstellung) und eine URL Rewrite-Regel verwenden, um HTTP-Anfragen an HTTPS zu umleiten mit Ausnahme von kommt die Anforderung von der Warm-up-Modul:

<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 „Dieses Verhalten ist von Design." Seufzer. Leider werden in den oberen Suchergebnissen, die ich über diese Anwendungsinitialisierungsfunktion gefunden habe, diese Einschränkung nicht erwähnt, es sei denn, man interpretiert "HTTP-Anforderung" als streng vertrauliche Anforderungen.

+1

Danke, das hat mir viel Frust erspart! –

+0

@AaronD Gern geschehen. Freut mich, dass es jemand anderem geholfen hat! –

+0

@ ChrisW.Rea Was für eine kluge Idee. Vielen Dank! – UncleZen