2012-05-29 2 views
0

Мне нужно иметь возможность отвечать на запросы с кодом состояния http 204, но appharbor возвращает только 500 ошибок. Мой код контроллера выполняется правильно, но когда вызывается код ниже, я вижу только ошибку 500 в скрипаче.AppHarbor MVC - Невозможно использовать код состояния HttpNoContent

protected ViewResult HttpNoContent() 
{ 
    Response.StatusCode = (int)HttpStatusCode.NoContent; 

    return View("NoContent"); 
} 
+0

Почему вы возвращаете представление с кодом статуса 204 (NoContent)? Существует ли представление «NoContent»? Обычно для этого вы возвращаете «EmptyResult». –

+0

Это конечная точка для фитмита, и они требуют от нас вернуть 204, когда запрос будет завершен. – Phil

+0

Я так понимаю, но код статуса 204 означает, что вам нужно вернуть пустой контент, т. Е. Нет содержимого. В вашем примере вы возвращаете представление. Это противоречиво. –

ответ

4

Цитата из specification (я поставил важную роль выделены жирным шрифтом):

состояния 204 ответа НЕ ДОЛЖЕН включать в себя тело сообщения, и, таким образом, всегда завершается первым пустая строка после полей заголовка.

Вы не соблюдаете это правило. 204 код состояния означает отсутствие содержимого, и все же вы возвращаете представление. Попробуйте вернуться EmptyResult:

protected ViewResult HttpNoContent() 
{ 
    Response.StatusCode = (int)HttpStatusCode.NoContent; 

    return new EmptyResult(); 
}