Установка 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 автоматически.
Моя проблема в том, что я не хочу, чтобы это провалилось на производственном сервере. Поэтому я бы чувствовал себя намного лучше, если бы мог понять "правильный" способ добиться этого. Почему первый подход работал для Мэтью Макдональда, но не для меня? И второй подход всегда будет надежным?
Кто-нибудь может предложить какие-либо советы?
Ответы
Ответ 1
Это потому, что свойство Status - это полная строка состояния, отправленная клиенту, а не только сообщение.
Вы можете либо написать:
response.Status = "404 File not found";
Или, предпочтительно:
response.StatusCode = 404;
response.StatusDescription = "File not found";
Обратите внимание, что в соответствии с его документацией HttpResponse.Status
устарела в пользу HttpResponse.StatusDescription.