2012-03-24 120 views
2

我正在使用ASP.NET Web API创建REST服务。 如何从GET方法的动作返回401状态码...返回GET请求的特定HTTP状态代码

我没有问题,例如返回一些状态代码。 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方法授权失败

感谢

+0

我没有看到任何认证回事在行动中。这个认证会在哪里发生?如果您需要在多个操作中执行此操作,我会考虑使用Authentication属性并根据需要装饰操作? – dreza 2012-03-24 20:22:51

回答

5

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

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