2012-10-26 16 views
7

W ramach Proof of Concept z wykorzystaniem modułu inicjalizacji aplikacji dla IIS 7.5 w celu zwiększenia szybkości inicjalizacji aplikacji internetowych, stworzyłem prostą aplikację internetową obsługiwaną w IIS 7.5 (Windows Server 2008 R2) z włączonym SSL. Zobacz ustawienia globalne i lokalne poniżej.Moduł Inicjalizacji Aplikacji dla IIS 7.5 wydanie

Jeśli dobrze rozumiem sposób działania modułu inicjowania aplikacji, oczekuję, że IIS wyśle ​​żądanie do appinit.aspx (https://localhost/alwaysrunning/appinit.aspx) w celu zainicjowania aplikacji internetowej. Tak się jednak nigdy nie dzieje.

Wszelkie pomysły?

Jaki jest cel atrybutu initializationPage?

Każda pomoc w tej sprawie byłaby bardzo doceniana.

EDYCJA: Po wyłączeniu SSL moduł inicjalizacji aplikacji wysyła żądanie do appinit.aspx zgodnie z oczekiwaniami. Muszę jednak uruchomić to z włączonym SSL.

Zen

Globalne ustawienia w pliku 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> 

Lokalne ustawienia w pliku web.config aplikacji:

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

Odpowiedz

4

(wiem, czerstwego pytanie, ale jest bez odpowiedzi & pojawił się w moim własnym Googlem e wyszukiwania na ten temat.)

Zobacz następujący artykuł od Microsoft Support: Application Initialization module fails when web site requires SSL (KB2843964). Cytat:

Przyczyna

To zachowanie jest zgodne z projektem.

Rozdzielczość

Aby obejść to ograniczenie, można rozważyć umożliwienie HTTP (odznacz "Wymagaj SSL" ustawienie w Menedżerze IIS/Ustawienia SSL) i użyć URL regułę Rewrite przekierowanie żądań HTTP na HTTPS z wyjątkiem żądanie pochodzące z modułu nagrzewania:

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

Pokochałbyś „to zachowanie jest zgodne z projekt." Westchnienie. Niestety, najlepsze wyniki wyszukiwania, które znalazłem na temat tej funkcji inicjalizacji aplikacji, nie wspominają o tym ograniczeniu, chyba że interpretuje się "żądanie HTTP" jako ściśle oznaczające niezabezpieczone żądania.

+1

Dzięki, zaoszczędziłem sobie wiele frustracji! –

+0

@AaronD Nie ma za co. Cieszę się, że pomógł komuś innemu! –

+0

@ ChrisW.Rea Co za sprytny pomysł. Dzięki! – UncleZen

Powiązane problemy