Anwendungsinitialisierungsmodul schlägt fehl, wenn die Website SSL erfordert

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem das Anwendungsinitialisierungsmodul für Eine Website nicht funktioniert, die so konfiguriert ist, dass Ssl (Secure Sockets Layer) erforderlich ist.

Ursprüngliche Produktversion:   ASP.NET
Ursprüngliche KB-Nummer:   2843964

Problembeschreibung

Application Initialization module formerly known as Application Warmup isn't working for web site configured to require SSL.

Ursache

Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Das Warm-Up-Modul sendet die Anforderung mithilfe von Hypertext Transfer Protocol (HTTP) und nicht mit Hypertext Transfer Protocol Secure (HTTPS). Die vorgeschlagene Problemumgehung lässt HTTP-Anforderungen an localhost aus dem Warm-Up-Modul zu, leitet jedoch für die restlichen Anforderungen an https um, sodass das Warm-Up-Modul Anforderungen über HTTP ausführt.

Lösung

Um diese Einschränkung zu umgehen, sollten Sie HTTP aktivieren (die Einstellung "SSL anfordern" unter IIS-Manager > SSL Einstellungen deaktiviert) aktivieren und eine URL-Neuschreibregel verwenden, um HTTP-Anforderungen an HTTPS umzuleiten, mit Ausnahme der Anforderung, die vom Warm-Up-Modul stammt:

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