Message d’erreur lorsque vous visitez un site web hébergé sur IIS 7.0 ou versions ultérieures : Erreur HTTP 404.17 - Introuvable
Cet article vous aide à résoudre le problème HTTP Error 404.17 - Introuvable lorsque vous visitez un site Web hébergé sur Internet Information Services (IIS) 7.0 ou versions ultérieures.
Version du produit d’origine : Internet Information Services
Numéro de base de connaissances d’origine : 2019689
Symptômes
Vous disposez d’un site Web hébergé sur IIS 7.0 ou versions ultérieures. Lorsque vous accédez à du contenu dynamique dans le site Web à l’aide d’un navigateur Web, vous pouvez recevoir un message d’erreur semblable à ce qui suit :
Résumé de l’erreur
Erreur HTTP 404.17 - Introuvable
Le contenu demandé semble être un script et ne sera pas servi par le gestionnaire de fichiers statique.
Informations détaillées sur les erreurs :Module StaticFileModule
Notification ExecuteRequestHandler
Gestionnaire StaticFile
Code d’erreur 0x80070032URL demandée http://iisserver:80/page.aspx
Chemin physique C :\inetpub\wwwroot\page.aspx
Logon, méthode anonyme
Ouverture de session anonyme de l’utilisateur
Cause
Cette erreur se produit parce que le gestionnaire HTTP configuré pour gérer la requête a certaines conditions préalables définies, mais que son pool d’applications ne répond pas à certaines ou toutes ces conditions préalables. Cela entraîne l’utilisation du gestionnaire de fichiers statiques pour traiter la requête à la place. Le traitement de la requête échoue ensuite et l’état 404.17 retourné, car la requête concerne une ressource dynamique et non une ressource statique.
Par exemple, considérez le mappage de gestionnaire suivant :
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
Dans ce cas, une erreur 404.17 est retournée si la ressource *.aspx demandée à partir du site est gérée dans un pool d’applications qui n’est pas en Classic
mode, n’est pas 32 bits ou n’exécute pas la version 2.0 du .NET Framework. Pour que la ressource soit correctement traitée dans cet exemple, les trois conditions préalables doivent être remplies. Plus précisément, le pool d’applications hébergeant cette ressource doit être configuré pour Classic
le mode, il doit être configuré pour utiliser la version 2.0 du .NET Framework, et elle doit être définie pour les applications 32 bits.
Résolution
Pour résoudre ce problème, configurez le pool d’applications hébergeant l’application pour répondre à toutes les conditions préalables définies pour le gestionnaire.
Ouvrir le Gestionnaire IIS
Développez le nom de l’ordinateur et cliquez sur Pools d’applications dans le volet gauche.
Mettez en surbrillance le pool d’applications hébergeant la ressource dans le volet central.
Dans le volet d’extrême droite, cliquez sur Paramètres avancés...
Dans la boîte de dialogue Paramètres avancés sous la catégorie (Général), configurez les paramètres suivants pour qu’ils correspondent aux exigences du gestionnaire :
- Version du .NET Framework
- Activer les applications 32 bits
- Mode pipeline géré
Plus d’informations
Les informations de cette section sont destinées à aider à identifier les gestionnaires configurés pour le site web et l’application mentionnés dans l’erreur, ainsi qu’à identifier les conditions préalables configurées pour ce gestionnaire.
commandes Appcmd.exe
Les commandes suivantes peuvent être utilisées pour identifier les gestionnaires configurés pour le site Web répertoriés dans la sortie de l’erreur.
Répertorier le pool d’applications
Les commandes suivantes montrent comment déterminer le pool d’applications dans lequel l’application s’exécute, puis répertorier les conditions préalables configurées pour ce pool d’applications.
C:\Windows\System32\inetsrv>appcmd.exe list apps /site.name:"Default Web Site"
APP "Default Web Site/" (applicationPool:DefaultAppPool)
C:\Windows\System32\inetsrv>appcmd.exe list apppools
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
Répertorier les gestionnaires
Cette commande génère les gestionnaires configurés pour l’application spécifique dans le site web par défaut.
C:\Windows\System32\inetsrv>appcmd.exe list config "Default Web Site/application" -section:handlers
<system.webServer>
<handlers accessPolicy="Read, Script">
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
</system.webServer>
Dans le cas de ASP.NET, de nombreux gestionnaires peuvent être configurés pour une ressource *.aspx. Dans certains cas, le gestionnaire peut simplement avoir besoin d’être modifié pour correspondre au pool d’applications dans lequel l’application s’exécute. Vous trouverez ci-dessous la liste des différents gestionnaires ASP.NET 2.0 avec leurs différents paramètres de pré-condition.
gestionnaire ASP.NET 2.0 mode intégré 32/64 bits
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
gestionnaire ASP.NET 2.0 mode classique 32 bits
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
gestionnaire ASP.NET 2.0 Mode classique 64 bits
<add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
Opérations à reproduire
Créez un répertoire qui contient deux fichiers.
Test.aspx avec le contenu
<%Response.Write("Hello World")%>
Web.config avec le contenu :
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpRedirect enabled="false" destination="http://TestSite" exactDestination="false" childOnly="false" httpResponseStatus="Permanent" /> <security> </security> <handlers> <clear/> <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> </handlers> </system.webServer> <system.web> <authentication mode="Windows"> <forms cookieless="UseCookies" /> </authentication> </system.web> </configuration>
Créez une application IIS 7.0 ou ultérieure qui pointe vers le répertoire avec ces deux fichiers.
Configurez la nouvelle application à exécuter dans un pool d’applications configuré pour le mode intégré.
Accédez à test.aspx.