2013-06-12 2 views
8

Почему asp.net переходит от выполнения нормальных 404 ответов, когда нет настраиваемых ошибок для ответа с помощью 302 или 200 при включении пользовательских ошибок?ASP.NET пользовательская страница ошибки HTTP ответ

Так, например, я попытался все следующие:

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

и

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

и

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

Насколько я могу сказать, верхний дает 302, поскольку он перенаправляется на страницу с ошибкой, вторая дает по какой-то причине 200, а последняя также дает 302. Это кажется скорее глупый, поскольку я все еще хочу 404 (или любой другой код ошибки), но для отображения дружеского сообщения.

Я понимаю, что могу отправить другой ответ обратно с моей страницей ошибок, но это, похоже, дает код 404 странице ошибки и сохраняет 302 в исходном запросе.

Если я что-то не хватает ...

ответ

4

Вы правы, ASP.NET ведет себя немного напуганный, когда customErrors включены. Короче говоря, вы можете установить redirectMode="ResponseRewrite" для customErrors и конкретно задать код ответа на странице error.aspx.

Я разместил здесь подробную информацию: Keep ASP.NET error pages out of search engines.

Смежные вопросы