Вернуть определенный код состояния HTTP в действии для запроса GET - PullRequest
2 голосов
/ 24 марта 2012

Я создаю REST-сервис, используя ASP.NET Web API. Как я могу вернуть код состояния 401 из действия для метода GET ...

У меня нет проблем с возвратом кода состояния, например, из Метод POST, потому что я могу установить тип возвращаемого значения HttpResponseMessage

   public HttpResponseMessage Post(Car car)
    {
        using (var context = new CarEntities())
        {
            ...
            var response = new HttpResponseMessage(HttpStatusCode.Created);
            response.Headers.Location = new Uri(Request.RequestUri, path);
            return response;
        }
    }

Однако, как я могу вернуть код состояния для метода GET, когда метод возвращает тип, отличный от HttpResponseMessage:

public Car Get(int id)
{

    var context = new CarEntities();
    return context.Cars.Where(p => p.id == id).FirstOrDefault();
}

Я бы хотел вернуться, например. 401, когда авторизация в этом методе Get не удалась

Спасибо

1 Ответ

5 голосов
/ 24 марта 2012

Вы должны бросить HttpResponseException, который позволяет указать код ответа, например:

if (authFailed) {
    throw new HttpResponseException(HttpStatusCode.Unauthorized);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...