Partager via


Le module d’initialisation d’application échoue lorsque le site web nécessite SSL

Cet article vous aide à résoudre le problème où le module d’initialisation d’application ne fonctionne pas pour le site web configuré pour exiger ssl (Secure Sockets Layer).

Version du produit d’origine : ASP.NET
Numéro de base de connaissances d’origine : 2843964

Symptômes

Le module d’initialisation d’application anciennement appelé Application Warmup ne fonctionne pas pour le site web configuré pour exiger SSL.

Cause

Ce comportement est fait exprès.

Le module de préchauffement envoie la requête à l’aide du protocole HTTP (Hypertext Transfer Protocol) et non avec le protocole HTTPS (Hypertext Transfer Protocol Secure). La solution suggérée autorise les requêtes HTTP à localhost à partir du module de préchauffement, mais elle redirige vers https pour le reste des requêtes. Par conséquent, par conception, le module de préchauffement effectue des requêtes via HTTP.

Résolution

Pour contourner cette limitation, vous pouvez envisager d’activer HTTP (décoché le paramètre Exiger SSL sous paramètres SSL du Gestionnaire>IIS) et d’utiliser une règle de réécriture d’URL pour rediriger les requêtes HTTP vers HTTPS à l’exception de la requête provenant du module de préchauffement :

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