Где и почему asp.net меняет сообщение об ошибке? - PullRequest
1 голос
/ 28 августа 2009

Я хочу, чтобы мое приложение ASP.NET MVC возвращало HTTP-ответ с кодом 400 и описанием ошибки в теле сообщения. Мой код:

response.StatusCode = 400;
response.Write("Some error");
response.End();

Когда я тестирую этот код на локальном хосте, я получаю ожидаемый результат. Но на удаленном сервере текст ответа содержит только текстовое описание ошибки, в данном случае «Bad Request».

  1. Не могли бы вы объяснить это поведение?
  2. Какое решение для этого?

Веб-сервер - IIS7, locahost означает, что я получаю доступ с локального компьютера, удаленный - с удаленного.

Ответы [ 2 ]

1 голос
/ 28 августа 2009

Ответ прост:

response.TrySkipIisCustomErrors = true;
0 голосов
/ 28 августа 2009

Когда вы говорите «localhost», вы имеете в виду веб-сервер разработки Cassini, используемый при отладке в VS, верно?

Сервер, на который вы развертываете, - это IIS6? По умолчанию он перехватывает 400 и отправляет свой собственный ответ. Я не уверен, что есть способ, которым вы можете помешать этому (вы можете обойтись с MetaBase, но я не уверен). Вы можете указать URL на своем сайте для страницы, которую вы хотите выполнить при отправке этого кода.

Тем не менее, почему вы используете 400, а не просто выбрасываете исключение? 400 немного злоупотребляется протоколами, такими как SOAP, что расширяет смысл неправильно сформированного HTTP-запроса в приложении, но это граница, поскольку SOAP также является конвертом передачи.

Однако мне кажется странным иметь приложение, принявшее запрос на отправку ответа 400, обычно вместо этого вы отправляете вариант 500.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...