IIS 7.0 veya sonraki sürümlerde barındırılan bir Web sitesini ziyaret ettiğinizde hata iletisi: HTTP Hatası 404.17 - Bulunamadı

Bu makale, Internet Information Services (IIS) 7.0 veya sonraki sürümlerde barındırılan bir Web sitesini ziyaret ettiğinizde HTTP Hatası 404.17 - Bulunamadı sorununu çözmenize yardımcı olur.

Özgün ürün sürümü: Internet Information Services
Özgün KB numarası: 2019689

Belirtiler

IIS 7.0 veya sonraki sürümlerde barındırılan bir Web siteniz var. Bir Web tarayıcısı kullanarak Web sitesindeki dinamik içeriğe göz attığınızda, aşağıdakine benzer bir hata iletisi alabilirsiniz:

Hata Özeti
HTTP Hatası 404.17 - Bulunamadı
İstenen içerik betik gibi görünüyor ve statik dosya işleyicisi tarafından sunulmayacak.
Ayrıntılı Hata Bilgileri:

StaticFileModule Modülü
ExecuteRequestHandler Bildirimi
İşleyici StaticFile
Hata Kodu 0x80070032

İstenen URL http://iisserver:80/page.aspx
Fiziksel Yol C:\inetpub\wwwroot\page.aspx
Anonim Oturum Açma Yöntemi
Oturum Açma Kullanıcısı Anonim

Neden

bu hata, isteği işlemek üzere yapılandırılmış HTTP İşleyicisinin belirli önkoşulların ayarlanmış olması, ancak Uygulama havuzunun bu önkoşulların bazılarını veya tümünü karşılamaması nedeniyle oluşur. Bu, statik dosya işleyicisinin bunun yerine isteği işlemek için kullanılmasına neden olur. ardından isteğin işlenmesi başarısız olur ve istek statik kaynak değil dinamik bir kaynak olduğundan 404.17 durumu döndürülür.

Örneğin, aşağıdaki işleyici eşlemesini göz önünde bulundurun:

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

Bu durumda, siteden istenen *.aspx kaynağı Modda çalışmayanClassic, 32 bit olmayan veya .NET Framework 2.0 sürümünü çalıştırmayan bir Uygulama havuzunda işlenirse 404.17 hatası döndürülür. Kaynağın bu örnekte doğru şekilde hizmet verilebilmesi için üç ön koşulun da karşılanması gerekir. Özellikle, bu kaynağı barındıran uygulama havuzunun Mod için Classic yapılandırılması, .NET Framework 2.0 sürümünü kullanacak şekilde yapılandırılması ve 32 bit uygulamalar için ayarlanması gerekir.

Çözüm

Bu sorunu çözmek için, uygulamayı barındıran Uygulama Havuzunu İşleyici için ayarlanan tüm ön koşulları karşılayacak şekilde yapılandırın.

  1. IIS Yöneticisi'ni açma

  2. Bilgisayar adını genişletin ve sol bölmedeki Uygulama Havuzları'na tıklayın.

  3. Orta bölmede kaynağı barındıran Uygulama Havuzu'nı vurgulayın.

  4. En sağ bölmede Gelişmiş Ayarlar... seçeneğine tıklayın.

  5. (Genel) kategorisinin altındaki Gelişmiş ayarlar iletişim kutusunda, işleyici gereksinimlerini karşılayacak şekilde aşağıdaki ayarları yapılandırın:

    • .NET Framework Sürümü
    • 32 Bit Uygulamaları Etkinleştirme
    • Yönetilen İşlem Hattı Modu

Daha fazla bilgi

Bu bölümdeki bilgiler, hatada bahsedilen web sitesi ve uygulama için hangi işleyicilerin yapılandırıldığını belirlemeye yardımcı olmak ve bu işleyici için yapılandırılan ön koşulları belirlemeye yardımcı olmak için hazırlanmıştır.

Appcmd.exe komutları

Hatanın çıkışında listelenen Web Sitesi için yapılandırılan işleyicileri tanımlamak için aşağıdaki komutlar kullanılabilir.

Uygulama havuzunu listeleme

Aşağıdaki komutlar, uygulamanın hangi uygulama havuzunda çalıştığını belirlemeyi ve ardından bu uygulama havuzu için yapılandırılmış önkoşulları listelemeyi gösterir.

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)

İşleyicileri listeleme

Bu komut, varsayılan web sitesindeki belirli uygulama için yapılandırılan işleyicilerin çıkışını alır.

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>

ASP.NET durumunda, *.aspx kaynağı için yapılandırılmış birçok işleyici olabilir. Bazı durumlarda, işleyicinin yalnızca uygulamanın çalıştığı uygulama havuzuyla eşleşecek şekilde değiştirilmesi gerekebilir. Aşağıda, çeşitli ön koşul ayarlarına sahip farklı ASP.NET 2.0 İşleyicilerinin listesi yer almaktadır.

  • ASP.NET 2.0 Tümleşik Mod 32/64 bit İşleyicisi

    <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" 
         type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
    
  • ASP.NET 2.0 Klasik Mod 32 bit İşleyici

    <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 Klasik Mod 64 bit İşleyicisi

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

Yeniden oluşturma adımları

  1. İki dosya içeren bir dizin oluşturun.

    • İçerikle Test.aspx<%Response.Write("Hello World")%>

    • İçerikle Web.config:

      <?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. Bu iki dosyayla dizine işaret eden bir IIS 7.0 veya sonraki sürümler uygulaması oluşturun.

  3. Yeni uygulamayı, tümleşik mod için yapılandırılmış bir uygulama havuzunda çalışacak şekilde yapılandırın.

  4. test.aspx'a gidin.