Felmeddelande när du besöker en webbplats som körs i IIS 7.0 eller senare: HTTP-fel 404.17 – Hittades inte
Den här artikeln hjälper dig att lösa HTTP-fel 404.17 – Det gick inte att hitta problemet när du besöker en webbplats som finns i IIS 7.0-versioner (Internet Information Services) eller senare versioner.
Ursprunglig produktversion: Internet Information Services
Ursprungligt KB-nummer: 2019689
Symptom
Du har en webbplats som finns på IIS 7.0 eller senare versioner. När du bläddrar till dynamiskt innehåll på webbplatsen med hjälp av en webbläsare kan du få ett felmeddelande som liknar följande:
Felsammanfattning
HTTP-fel 404.17 – Hittades inte
Det begärda innehållet verkar vara skript och hanteras inte av den statiska filhanteraren.
Detaljerad felinformation:Modulen StaticFileModule
Notification ExecuteRequestHandler
Hantera StaticFile
Felkod 0x80070032Begärd URL http://iisserver:80/page.aspx
Fysisk sökväg C:\inetpub\wwwroot\page.aspx
Anonym inloggningsmetod
Anonym inloggningsanvändare
Orsak
Det här felet beror på att HTTP-hanteraren som konfigurerats för att hantera begäran har vissa förhandsvillkor angivna, men dess programpool uppfyller inte vissa eller alla av dessa förhandsvillkor. Detta gör att den statiska filhanteraren används för att bearbeta begäran i stället. Bearbetningen av begäran misslyckas sedan och statusen 404.17 returneras eftersom begäran är för en dynamisk resurs och inte en statisk.
Tänk till exempel på följande hanterarmappning:
<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" />
I det här fallet returneras ett 404.17-fel om den *.aspx resurs som begärs från platsen hanteras i en programpool som inte körs i Classic
läge, inte är 32-bitars eller inte kör 2.0-versionen av .NET Framework. För att resursen ska kunna hanteras korrekt i det här exemplet måste alla tre förhandsvillkoren vara uppfyllda. Mer specifikt måste programpoolen som är värd för den här resursen konfigureras för Classic
Läge, den måste konfigureras för att använda 2.0-versionen av .NET Framework och måste anges för 32-bitarsprogram.
Åtgärd
Lös problemet genom att konfigurera programpoolen som är värd för programmet så att den uppfyller alla förhandsvillkor som angetts för hanteraren.
Öppna IIS-hanteraren
Expandera datornamnet och klicka på Programpooler i den vänstra rutan.
Markera programpoolen som är värd för resursen i mittenfönstret.
Klicka på Avancerade inställningar längst till höger...
I dialogrutan Avancerade inställningar under kategorin (Allmänt) konfigurerar du följande inställningar för att matcha hanteringskraven:
- .NET Framework-version
- Aktivera 32-bitarsprogram
- Hanterat pipelineläge
Mer information
Informationen i det här avsnittet är avsedd att hjälpa dig att identifiera vilka hanterare som är konfigurerade för webbplatsen och programmet som nämns i felet, samt hjälpa till att identifiera de förvillkor som har konfigurerats för den hanteraren.
Appcmd.exe kommandon
Följande kommandon kan användas för att identifiera de hanterare som konfigurerats för webbplatsen som anges i utdata från felet.
Lista programpool
Följande kommandon visar hur du avgör vilken programpool programmet körs i och listar sedan de förhandsvillkor som konfigurerats för den programpoolen.
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)
Listhanterare
Det här kommandot matar ut de hanterare som konfigurerats för det specifika programmet på standardwebbplatsen.
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>
När det gäller ASP.NET kan det finnas många hanterare konfigurerade för en *.aspx resurs. I vissa fall kan hanteraren bara behöva ändras för att matcha programpoolen som programmet körs i. Nedan visas en lista över olika ASP.NET 2.0-hanterare med sina olika inställningar för förhandsvillkor.
ASP.NET 2.0 Integrerat läge 32/64-bitarshanterare
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
ASP.NET 32-bitarshanteraren i klassiskt läge 2.0
<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 64-bitarshanteraren i klassiskt läge 2.0
<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" />
Steg för att återskapa
Skapa en katalog som innehåller två filer.
Test.aspx med innehållet
<%Response.Write("Hello World")%>
Web.config med innehållet:
<?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>
Skapa ett IIS 7.0- eller senare versionsprogram som pekar på katalogen med dessa två filer.
Konfigurera det nya programmet så att det körs i en programpool som är konfigurerad för integrerat läge.
Bläddra till test.aspx.