Jaka jest różnica między sekcjami customErrors
i httpErrors
pliku web.config w aplikacjach ASP.NET MVC?
Jakie są wskazówki dotyczące korzystania z każdej sekcji?
web-config
iis-7.5
Alan T.
źródło
źródło
Odpowiedzi:
Zastrzeżenie: wynika to z mojego doświadczenia i nie zostało udowodnione.
Oba służą do definiowania obsługi błędów w witrynie internetowej, ale inne oprogramowanie odwołuje się do różnych elementów konfiguracji.
customErrors
są starszym (kompatybilnym wstecz) elementem używanym przez Visual Studio Development Server (inaczej VSDS lub Cassini).httpErrors
to nowy element używany tylko przez IIS7.Podkreśla to możliwy problem podczas tworzenia witryn sieci Web ASP.NET podczas korzystania z VSDS zamiast lokalnych usług IIS.
Zapoznaj się również z tym postem dotyczącym obsługi komunikatów o błędach w usługach IIS7, jeśli chcesz mieć pełną kontrolę nad wyjściami błędów.
Podsumowanie:
VSDS
użyciucustomErrors
IIS6
użytkucustomErrors
IIS7
użytkuhttpErrors
.a jeśli rozwijasz się z,
VSDS
ale publikujeszIIS7
, to myślę, że będziesz potrzebować obu.źródło
* Zaktualizowano kwiecień 2016 r
Atrybut customErrors jest używany, gdy kod .net zgłasza wyjątek (404, 403, 500 itd.), A atrybut httpErrors jest używany, gdy same usługi IIS zgłaszają wyjątek.
Istnieje wiele pułapek podczas próby poprawnej konfiguracji. Jeśli więc szukasz szybkiego przykładu, najlepsze dostępne opcje to:
Przykład 1: Korzystanie ze stron html
Przykład 2: używanie stron aspx
A na stronach błędów aspx musisz zrobić coś takiego (przykładowa strona 404):
Uwaga: użycie adresów URL bez rozszerzeń w sekcji customErrors nie jest możliwe! . (bez hacków)
Jednym obejściem jest wyłączenie niestandardowych błędów i zezwolenie błędom http na obsługę niestandardowej strony. Znajomy stworzył taką konfigurację, jak znajdę trochę czasu to udostępnię kod.
tło
Dobra niestandardowa strona błędu:
Aby wyjaśnić niektóre opcje w naszej konfiguracji:
<customErrors mode="RemoteOnly"
. Można podać tutaj:On
,Off
,RemoteOnly
.On
= Zawsze pokazuj niestandardowe strony błędówOff
= Zawsze pokazuj rzeczywisty błądRemoteOnly
= Pokaż błąd lokalnie, ale pokaż zdalnie niestandardową stronę błędu. Więc chcemyRemoteOnly
zdania 1<customErrors redirectMode="ResponseRewrite"
. Możesz określić tutaj:ResponseRedirect
lubResponseRewrite
.ResponseRedirect
Tryb przekieruje na stronę błędu na stronę błędu niestandardowego. W przypadku robota indeksującego linki (SEO) spowoduje to 302 -> 500, ale chcesz, aby robot indeksujący linki otrzymał błąd 500.<httpErrors errorMode="DetailedLocalOnly"
. To odpowiednikcustomErrors
trybu. Opcje, które masz:Custom
,Detailed
,DetailedLocalOnly
.Dobry wpis na blogu, który bardzo mi pomógł, to: http://benfoster.io/blog/aspnet-mvc-custom-error-pages
źródło
<customErrors>
przeciw<httpErrors>
<customErrors>
<httpErrors>
Cytowane źródło: niestandardowe 404 i strony błędów w ASP.NET (doskonały artykuł)
ExecuteURL
obsługuje zawartość dynamiczną, taką jak strona .aspx (path
wartość musi być względnym adresem URL serwera ):File
wyświetla niestandardowy plik błędów, taki jak strona .html:Źródła : błędy HTTP (www.iis.net)
Aby uzyskać więcej informacji, przeczytaj łącze www.iis.net powyżej
źródło
it's no loger necesary to use customErrors
i cytat, to naprawdę informacja, której szukałem :-)Sekcja błędów w konfiguracji sieciowej służy do zapewnienia niestandardowego podejścia do obsługi błędów http. Istnieją dwie sekcje, jedna niestandardowa błąd w sekcji system.web i druga httpErrors w sekcji system.webServer (jak podano poniżej)
customErrors: Ta sekcja była używana przed wprowadzeniem usług IIS 7, IIS 6 5 i przed pełnym użyciem tej sekcji do obsługi niestandardowych błędów http zgodnie z kodem stanu http.
httpErrors: IIS 7 i nowsze używają tej sekcji, a także sekcji customErrors do obsługi niestandardowych błędów http na podstawie ich rozszerzeń plików, jeśli żądane rozszerzenie strony rejestruje się w dll ISAPI (.aspx, ashx, .asmx, .svc itp.), tak jak index.aspx. Ustawienie pobierania usług IIS z sekcji customeErrors w przeciwnym razie odbiera ustawienie z httpErrors (tryb hostowany usług IIS 7 musi być ustawiony jako zintegrowany nastrój, a nie klasyczny)
poniżej znajdują się przykłady linku kontrolnego obsługi błędów 404:
httperrors a customerrors w webconfig, iis, asp.net
źródło