2013-06-12 25 views
8

Dlaczego asp.net nie wykonuje normalnych 404 odpowiedzi, gdy nie ma niestandardowych błędów odpowiadających 302 lub 200 po włączeniu błędów niestandardowych?Niestandardowa odpowiedź strony ASP.NET błędu HTTP

Tak na przykład Próbowałem wszystkie z poniższych kryteriów:

<customErrors defaultRedirect="Error.aspx" mode="Off"> 
    <error statusCode="404" redirect="Error.aspx?status=404" /> 
</customErrors> 

i

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

i

<httpErrors> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/error.aspx?status=404" responseMode="Redirect" /> 
</httpErrors> 

O ile mogę powiedzieć górny jeden daje 302 ponieważ przekierowuje do strony błędu, druga daje 200 z jakiegoś powodu, a ostatnia daje również 302. Wydaje się raczej głupie, ponieważ wciąż chcę 404 (lub jakikolwiek inny kod błędu), ale wyświetlać przyjazny komunikat.

Rozumiem, że mogę wysłać inną odpowiedź z powrotem z moją stroną błędu, ale wydaje się, że daje ona kod błędu 404 i zachowuje numer 302 na pierwotnym żądaniu.

chyba że jestem brakuje czegoś ...

Odpowiedz

4

Masz rację, ASP.NET zachowuje się nieco ostry kiedy customErrors są włączone. W skrócie można ustawić redirectMode="ResponseRewrite" dla customErrors i specjalnie ustawić kod odpowiedzi na stronie error.aspx.

Podpisałem tu szczegóły: Keep ASP.NET error pages out of search engines.

Powiązane problemy