Я реализую исключение HttpRequestValidationException в обработчике Application_Error и, если возможно, хочу отобразить собственное сообщение.Response.StatusCode и Internet Explorer - отображение пользовательского сообщения?
Теперь я думаю о StatusCode. В моем текущем примере он отправляет 200, которые, я думаю, не следует делать. Я хотел бы отправить (IMHO) более подходящий 400 Bad Request вместо этого. Однако в то же время я хотел бы использовать Response.Write для ввода пользовательского сообщения. Firefox отображает его правильно, но IE7 дает мне бесполезную страницу ошибок Internet Explorer по умолчанию.
С одной стороны, я думаю, что Internet Explorer просто предполагает, что все <> 200 просто не имеет никакого «хорошего» контента и RFC is not really clear здесь.
Так что я просто удивляюсь, отправляет HTTP 200 на страницу с ошибкой, вызванную хорошей практикой HttpRequestValidationException или нет? Есть ли хорошие альтернативы?
Спасибо! Мое решение: я создал> 512 байт Error.aspx, но Global.asax установит StatusCode на 400, а затем сделает Server.Transfer вместо Response.Redirect. Хорошо работает с AJAX и Internet Explorer. – 2008-09-08 22:27:03
Просто добавьте: Обычно Response.Redirect также будет жизнеспособным решением. Однако, если вы используете ASP.net AJAX, вы также будете перенаправлены. Server.Transfer позволяет вам оставаться на текущей странице для AJAX-запросов и обрабатывать ошибку в JavaScript. См. Мой вопрос HttpRequestValidationException. – 2008-09-09 08:27:23