返回GET请求的特定HTTP状态代码

时间:2012-03-24 14:25:42

标签: asp.net asp.net-mvc asp.net-web-api

我正在使用ASP.NET Web API创建REST服务。 如何从GET方法的操作中返回401状态代码...

我从例如返回某些状态代码时没有问题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;
        }
    }

但是,当方法返回的类型不同于HttpResponseMessage时,如何返回GET方法的状态代码:

public Car Get(int id)
{

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

我想回复,例如401此Get方法中的授权失败时

由于

1 个答案:

答案 0 :(得分:5)

您应该抛出一个HttpResponseException,它允许您指定响应代码,例如:

if (authFailed) {
    throw new HttpResponseException(HttpStatusCode.Unauthorized);
}