Подтвердить что ты не робот

Установка Response.Status генерирует "Строка состояния HTTP недействительна" Исключение

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

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

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

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

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

response.Status = "404 Not found";

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

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

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

4b9b3361

Ответ 1

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

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

response.Status = "404 File not found";

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

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

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