Foutbericht wanneer u een website bezoekt die wordt gehost op IIS 7.0 of nieuwere versies: HTTP-fout 404.17 - Niet gevonden
Dit artikel helpt u bij het oplossen van het HTTP-probleem 404.17 - Niet gevonden wanneer u een website bezoekt die wordt gehost op IIS 7.0 of hoger (Internet Information Services).
Oorspronkelijke productversie: Internet Information Services
Oorspronkelijk KB-nummer: 2019689
Symptomen
U hebt een website die wordt gehost op IIS 7.0 of hoger. Wanneer u in een webbrowser naar dynamische inhoud op de website bladert, wordt er mogelijk een foutbericht weergegeven dat er ongeveer als volgt uitziet:
Foutsamenvatting
HTTP-fout 404.17 - Niet gevonden
De aangevraagde inhoud lijkt script te zijn en wordt niet geleverd door de statische bestandshandler.
Gedetailleerde foutinformatie:Module StaticFileModule
Notification ExecuteRequestHandler
Handler StaticFile
Foutcode 0x80070032Aangevraagde URL http://iisserver:80/page.aspx
Fysiek pad C:\inetpub\wwwroot\page.aspx
Aanmeldingsmethode anoniem
Anonieme aanmeldingsgebruiker
Oorzaak
Deze fout treedt op omdat de HTTP-handler die is geconfigureerd voor het verwerken van de aanvraag, bepaalde voorwaarden heeft ingesteld, maar de groep toepassingen voldoet niet aan een of meer van deze voorwaarden. Hierdoor wordt de statische bestandshandler gebruikt om de aanvraag te verwerken. De verwerking van de aanvraag mislukt en de status 404.17 is geretourneerd omdat de aanvraag voor een dynamische resource is en niet voor een statische resource.
Denk bijvoorbeeld aan de volgende handlertoewijzing:
<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" />
In dit geval wordt een 404.17-fout geretourneerd als de *.aspx resource die wordt aangevraagd vanaf de site wordt verwerkt in een groep toepassingen die niet wordt uitgevoerd in Classic
de modus, niet 32 bits is of niet de 2.0-versie van .NET Framework uitvoert. Om ervoor te zorgen dat de resource correct wordt geleverd in dit voorbeeld, moet aan alle drie de voorwaarden worden voldaan. De toepassingsgroep die als host fungeert voor deze resource moet worden geconfigureerd voor Classic
de modus, moet worden geconfigureerd voor het gebruik van de 2.0-versie van .NET Framework en moet worden ingesteld voor 32-bits toepassingen.
Oplossing
U kunt dit probleem oplossen door de groep toepassingen te configureren die als host fungeert voor de toepassing om te voldoen aan alle vooraf ingestelde voorwaarden voor de handler.
IIS-beheer openen
Vouw de computernaam uit en klik op Toepassingsgroepen in het linkerdeelvenster.
Markeer de groep toepassingen die als host fungeert voor de resource in het middelste deelvenster.
Klik in het rechterdeelvenster op Geavanceerde instellingen...
Configureer in het dialoogvenster Geavanceerde instellingen onder de categorie (Algemeen) de volgende instellingen zodat deze overeenkomen met de handlervereisten:
- .NET Framework-versie
- 32-bits toepassingen inschakelen
- Beheerde pipeline-modus
Meer informatie
De informatie in deze sectie is bedoeld om te bepalen welke handlers zijn geconfigureerd voor de website en toepassing die in de fout worden vermeld, en om de voorwaarden te identificeren die zijn geconfigureerd voor die handler.
opdrachten Appcmd.exe
De volgende opdrachten kunnen worden gebruikt om de handlers te identificeren die zijn geconfigureerd voor de website die worden vermeld in de uitvoer van de fout.
Groep van toepassingen weergeven
De volgende opdrachten laten zien hoe u kunt bepalen in welke groep toepassingen de toepassing wordt uitgevoerd en vervolgens de voorwaarden vermeld die zijn geconfigureerd voor die groep toepassingen.
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)
Lijsthandlers
Met deze opdracht worden de handlers uitgevoerd die zijn geconfigureerd voor de specifieke toepassing op de standaardwebsite.
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>
In het geval van ASP.NET zijn er mogelijk veel handlers geconfigureerd voor een *.aspx-resource. In sommige gevallen moet de handler mogelijk alleen worden gewijzigd zodat deze overeenkomt met de groep van toepassingen waarin de toepassing wordt uitgevoerd. Hieronder ziet u een lijst met de verschillende ASP.NET 2.0 Handlers met hun verschillende instellingen voor de voorwaarde.
ASP.NET 2.0 Geïntegreerde modus 32/64-bits handler
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
ASP.NET 2.0 klassieke modus 32-bits handler
<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" />
ASP.NET 2.0 Klassieke modus 64-bits handler
<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" />
Stappen om te reproduceren
Maak een map die twee bestanden bevat.
Test.aspx met de inhoud
<%Response.Write("Hello World")%>
Web.config met de inhoud:
<?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>
Maak een IIS 7.0- of nieuwere versietoepassing die verwijst naar de map met deze twee bestanden.
Configureer de nieuwe toepassing die moet worden uitgevoerd in een groep toepassingen die is geconfigureerd voor de geïntegreerde modus.
Blader naar test.aspx.