Foutbericht wanneer u een website bezoekt die wordt gehost op IIS 7.0 of hoger: HTTP-fout 404.17 - Niet gevonden

Dit artikel helpt u bij het oplossen van het probleem HTTP-fout 404.17 - Niet gevonden wanneer u een website bezoekt die wordt gehost op Internet Information Services (IIS) 7.0 of hoger.

Oorspronkelijke productversie: Internet Information Services
Origineel KB-nummer: 2019689

Symptomen

U hebt een website die wordt gehost op IIS 7.0 of hoger. Wanneer u met een webbrowser naar dynamische inhoud op de website bladert, wordt mogelijk een foutbericht weergegeven dat er ongeveer als volgt uitziet:

Foutoverzicht
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 0x80070032

Aangevraagde URL http://iisserver:80/page.aspx
Fysiek pad C:\inetpub\wwwroot\page.aspx
Aanmeldingsmethode Anoniem
Anonieme gebruiker aanmelden

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 niet voldoet aan een aantal of alle van deze voorwaarden. Dit zorgt ervoor dat de statische bestandshandler wordt gebruikt om de aanvraag te verwerken. De verwerking van de aanvraag mislukt vervolgens en de status 404.17 wordt geretourneerd omdat de aanvraag voor een dynamische resource is en niet voor een statische.

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 toepassingsgroep die niet wordt uitgevoerd in Classic de modus, niet 32-bits is of niet de 2.0-versie van de .NET Framework uitvoert. Als u wilt dat de resource in dit voorbeeld correct wordt uitgevoerd, moet aan alle drie de voorwaarden worden voldaan. De groep van toepassingen 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 de .NET Framework en moet worden ingesteld voor 32-bits toepassingen.

Oplossing

U kunt dit probleem oplossen door de groep van toepassingen die als host fungeert voor de toepassing te configureren om te voldoen aan alle voorwaarden die voor de handler zijn ingesteld.

  1. IIS-beheer openen

  2. Vouw de computernaam uit en klik op Toepassingsgroepen in het linkerdeelvenster.

  3. Markeer de groep van toepassingen die als host fungeert voor de resource in het middelste deelvenster.

  4. Klik in het rechterdeelvenster op Geavanceerde instellingen...

  5. Configureer in het dialoogvenster Geavanceerde instellingen onder de categorie (Algemeen) de volgende instellingen om aan de vereisten van de handler te voldoen:

    • .NET Framework versie
    • 32-bits toepassingen inschakelen
    • Beheerde pijplijnmodus

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 voor die handler zijn geconfigureerd.

opdrachten Appcmd.exe

De volgende opdrachten kunnen worden gebruikt om de handlers te identificeren die zijn geconfigureerd voor de website die wordt vermeld in de uitvoer van de fout.

Groep van toepassingen weergeven

De volgende opdrachten laten zien hoe u kunt bepalen in welke groep van toepassingen de toepassing wordt uitgevoerd. Vervolgens worden de voorwaarden vermeld die voor die groep van toepassingen zijn geconfigureerd.

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 hoeft de handler alleen maar te worden gewijzigd zodat deze overeenkomt met de groep van toepassingen waarin de toepassing wordt uitgevoerd. Hieronder vindt u een lijst met de verschillende ASP.NET 2.0-handlers met hun verschillende voorwaardeninstellingen.

  • 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

  1. Maak een map met twee bestanden.

    • 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>
      
  2. Maak een TOEPASSING van IIS 7.0 of hoger die verwijst naar de map met deze twee bestanden.

  3. Configureer de nieuwe toepassing om uit te voeren in een groep van toepassingen die is geconfigureerd voor de geïntegreerde modus.

  4. Blader naar test.aspx.