2011-07-13 29 views
8

kullanarak varsayılan hata sayfalarını görüntülemesini engelle Web uygulamasına özel hata sayfaları eklemeye çalışıyorum. Şimdiye kadar eleman altında benim web.config dosyasına bu eklemiş:IIS 7.5'in web.config

<customErrors mode="On" > 
    <error statusCode="404" redirect="~/404.aspx"/> 
    <error statusCode="500" redirect="~/500.aspx"/> 
</customErrors> 

Bu NET örneğin .aspx uzantısı içeren bir url dokunur hatalar için çalışıyor. Bununla birlikte, www.example.com/dasda gibi bir URL için görüntülenecek özel hatalar da istiyorum.

Şu anda yukarıdaki IIS 7.5 gibi bir sayfa talep ettiğimde kendi hata mesajını görüntülüyorum. Ben elemanın altında bu ekledik:

<httpErrors > 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="~/404.aspx" responseMode="ExecuteURL" /> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="500" path="~/500.aspx" responseMode="ExecuteURL" /> 
</httpErrors> 

Bu varsayılan olanlar var ama bu durum görünmüyor IIS yerine özel bir hata sayfası görüntüler yapacağı düşünülüyor.

IIS'de özel bir hata sayfası oluşturabileceğimin farkındayım, ancak durumum için ideal bir çözüm, bu yapılandırmayı web.config dosyasında yapmak olabilir. here önerildiği gibi

Ben Page_Load olayı benim özel hata sayfaları bu ekleme denedim:

  Response.TrySkipIisCustomErrors = true; 

benim özel hata sayfası yerine gösterilmesini varsayılan IIS sayfasını durmadı Ancak. Ben de here iddia edilenin denedi:

<httpErrors > 
    <remove statusCode="404" subStatusCode='-1' /> 
    <error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" /> 
    </httpErrors> 

Ama bu da işe yaramadı.

Web.config dosyasındaki ayarları yapılandırarak IIS'nin varsayılan hata sayfalarını görüntülemesini engellemenin bir yolu var mı?

cevap

14

karşılaşmakta olduğum sorun göz at web config aşağıdaki eklemeyi deneyin olduğunu varsayılan uygunluk konusunda bir nitelik errorMode vardır tarafından seçenekler: DetailedLocalOnly, Özel veya Ayrıntılı.

HataMode özniteliği yaptığım gibi belirtilmemişse varsayılan olarak DetailedLocalOnly (ref) varsayılanıdır. Bu, görüntülenen özel hatayı görmediğim anlamına gelir. çalıştı

yapılandırma ayarları vardı:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" subStatusCode='-1' /> 
    <remove statusCode="500" subStatusCode='-1' /> 
    <error statusCode="404" path="/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    <error statusCode="500" path="/500.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" /> 
    </httpErrors> 

errorMode = "Özel" sayfaları düzgün çalıştığından özel test etmek kullanışlıdır ama atlanmış ya errorMode = "DetailedLocalOnly için açık bir şekilde ayarlanabilir sol zaman muhtemelen daha kullanışlı "hata ayıklama amaçlı.

+1

Bunu göndermek için teşekkürler Aesir. Örneğinizde aynı sorunu çözebildim. – GibboK

+2

Bu da benim sorunumu çözdü. Teşekkürler! –

+1

errorMode bayrağını keşfettiğiniz için teşekkür ederiz; Etkisizlik beni rahatsız ediyordu. – icelava

0

Kullanıcı tarafından istenen herhangi bir kaynak için IIS'yi CustomErrorModule kullanması için zorlamanız gerektiğini düşünüyorum.

<modules> 
     <add name="CustomErrorModule" type="customErrorModule" preCondition="" /> 
</modules> 

da aşağıdaki linke

https://serverfault.com/questions/53712/in-iis-7-how-do-i-set-up-a-default-error-document-for-any-error

+1

Teşekkürler, web.config'in hangi kısmı eklenmeli? Onu httpModules ve modüller bölümüne koymaya çalıştım ama işe yaramadı. – Aesir

+0

Güncellemeye teşekkürler, ancak hala işe yaramadı. Çalışmayı başardım. – Aesir