Параметр Response.Status генерирует исключение «Строка состояния HTTP недопустима» - PullRequest
34 голосов
/ 09 января 2011

Я пишу обработчик HTTP в ASP.NET 4.0 и IIS7, и мне нужно сгенерировать условие отсутствия файла.

Я скопировал следующий код из новой книги Мэтью Макдональда, Pro ASP.Net 4 в C # 2010. (Переменная ответа является экземпляром текущего HttpResponse.)

response.Status = "File not found";
response.StatusCode = 404;

Однако я обнаружил, что первая строка генерирует ошибку времени выполнения HTTP status string is not valid.

Если вместо строк выше я использую следующее:

response.Status = "404 Not found";

Тогда все, кажется, работает нормально.На самом деле, я даже вижу, что response.StatusCode автоматически устанавливается на 404.

Моя проблема заключается в том, что я не хочу, чтобы это происходило с ошибкой на рабочем сервере.Так что я бы почувствовал себя намного лучше, если бы мог понять «правильный» способ сделать это.Почему первый подход сработал для Мэтью Макдональда, а не для меня?И всегда ли второй подход будет надежным?

Кто-нибудь может предложить какие-нибудь советы?

1 Ответ

60 голосов
/ 09 января 2011

Это потому, что свойство Status - это полная строка состояния, отправляемая клиенту, а не только сообщение.

Вы можете написать:

response.Status = "404 File not found";

Или, предпочтительно:

response.StatusCode = 404;
response.StatusDescription = "File not found";

Обратите внимание, что, согласно документации, HttpResponse.Status устарела в пользу HttpResponse.StatusDescription .

...