2010-12-20 27 views
10

, böyle benim web.config dosyasını konfigüre ettik:Web.config dosyasında customErrors ayarı neden bu durumda çalışmıyor? Paylaşılan barındırma sağlayıcısına yayınlandı benim ASP.NET 3.5 Web Sitesi

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
     <error statusCode="403" redirect="AccessDenied.htm"/> 
     <error statusCode="404" redirect="FileNotFound.htm"/> 
    </customErrors> 

Eğer "www gibi yok kullanıcı isteği sayfaları (.example.com/NotExistPage.aspx "), kullanıcı beklediğimiz gibi FileNotFound.htm sayfasına yönlendirilecek.

Ama kullanıcı isteğine eğer gibi bazı adresi: .aspx uzantısı olmadan "www.example.com/NotExistDirectory", kullanıcı karşılaşacak IIS 7.5 Hata sayfası:

HTTP Hatası 404.0 - Bulunamadı Aradığınız kaynak kaldırıldı, adı değiştirildi veya geçici olarak ulaşılamıyor.

detialed hata bilgisi:

Module IIS Web Core 
Notification MapRequestHandler 
Handler StaticFile 
Error Code 0x80070002 

Requested URL http://www.example.com:80/NotExistDirectory 
Physical Path D:\Websites\example\example.com\wwwroot\NotExistDirectory 
Logon Method Anonymous 
Logon User Anonymous 

Bu kullanıcı dostu olmayan bir sarı sayfası ve biz beklemiyorduk.

Webconfig'te customeError ayarının bu tür bir adresi desteklemediğini veya desteklemediğini merak ediyorum. Kullanıcıların bu sarı sayfayı görmesini nasıl engelleyebilirim?

Düzelt: David'in cevabı sayesinde, Ama gerçek nedeni ve doğru çözümü buldum. Lütfen cevabımı gör.

cevap

9

@Mostafa: Ben tam olarak aynı sorunla karşı karşıya. Ben web.config dosyasına aşağıdaki ekleyerek çözülebilir öğrendim:

<system.webServer> 
    <httpErrors errorMode="Custom"> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="/MyErrorPage.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 
    </system.webServer> 
+0

Teşekkür ederim, bu benim için çalıştı hatamode = "Özel" – Raver0124

+0

Yeni okuyucular için, Sonunda gerçek nedeni ve tam bir çözüm buldum, Sen benim cevabım bir göz atabilirsiniz – Mostafa

+0

çalışmıyor, ben olsun Bu xxx.com sayfası bulunamadı Web sitesi için bir web sayfası bulunamadı: https: //xxx.com/aaaaa HTTP ERROR 404 – Toolkit

1

Bunun nedeni, ASP.Net modülünün belirli dosya uzantılarını işlemek üzere yapılandırılmış olmasıdır. IIS .aspx'in ASP.Net modülü tarafından ele alınması gerektiğini ve daha sonra web.config'deki (ve gerçekten de web.config'un kendisinde) customerrors bölümünün

başlamasını istemektedir. ASP için bile yapılandırılmamış bir sayfa istediniz .Net, IIS isteği geçmeden kendi başına ele alır.

+0

Bu sorunu nasıl çözebilirim, aynı sorunla karşı karşıyayım? –

+2

http://www.braintrove.com/article/46/page/2 - IIS için özel sayfaların nasıl yapılandırılacağını açıklayan bu makaleyi deneyin. Kendinizi IIS boru hattında da yenilemek isteyebilirsiniz. –

0

İlk olarak, dizin url bölü posess gerekir, aksi takdirde onun sadece bir extensionless dosyasını. www.mysite.com/NotExistDirectory/
İkinci olarak, ASP.net IIS modülü yalnızca ASP MIME türleri için işleyicidir, bu nedenle dizin web sunucusu için artık yoktur. Üçüncü olarak, customerror, system.web'nin bir parçası olan ASP.NET yapılandırmasının bir parçası olan
ve httperror, system.webserver'ın bir parçası IIS yapılandırmasının bir parçasıdır.
IIS yapılandırmasında http modülü varsayılanlarını varsayarsanız, httperror mevcut olmayan dizin için özel hatayla çalışır.

0

Bu ilginç, birkaç yıl sonra aniden sorunun ne olduğunu anladım.

@ David çözümü sayesinde Ancak mantık ve komple çözüm olarak feryat geçerli:

biz çalışırken iken biz, ASP.NET uygulamasında bir istisna olsun "On" çalıştığını sadece var etmek customErrors modunu ayarlayarakveya notExsitingStaticResouce ulaşmak için, IIS 404 hata üretir ve doğrudan asp.net çalışma zamanı ve sunucuya IIS tarafından doğrudan ulaşmaz.

yüzden Web.config, feryat IIS için configuraiton eklemem gerekiyor: Bu responseMode "File", Aksi durum kodu otomatik 404 iken 200'e değiştirecek ayarlı önemlidir

<system.webServer> 
    <httpErrors errorMode="Custom"> 
     <remove statusCode="404"/> 
     <error statusCode="404" path="~/404.html" responseMode="File" /> 
    </httpErrors> 
    <system.webServer> 

. Yani müşteri açısından gerçek 404 durum kodunu alamıyorlar.