如何从IQueryable<T>返回HttpStatusCode?

6
我正在编写一个C# WebApi 2的Web服务,关于从IQueryable的Web服务函数返回HttpStatusCode,我有一个问题。
如果Web服务函数返回单个对象,则可以轻松使用以下方法:
public async Task<IHttpActionResult> GetItem(int id)
{
    return Content(HttpStatusCode.Unauthorized, "Any object");
}

在以下情况下,我不确定如何返回指定的HttpStatusCode
public IQueryable<T> GetItems()
{
    return Content(HttpStatusCode.Unauthorized, "Any object");
}

我能请你帮忙吗?这个问题跟IT技术有关。

2个回答

6
您可以使用适当的状态码抛出 HttpResponseException
public IQueryable<T> GetItems()
{
   throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("Any object") });
}

0
在第一种情况下,您仍将在Content方法中返回对象,例如:
public IHttpActionResult GetItem(int id)
{
    return Content(HttpStatusCode.Unauthorized, "Any object");
}

当你执行这个方法时,你会看到一个"任意对象"返回给客户端。在Web API 2中,IHttpActionResult本质上是围绕HttpResponseMessage的一个高级工厂。如果你忽略了方法的返回类型是IHttpActionResult,你可以通过用可查询对象替换"任意对象"来返回一个IQueryable,例如:
public IHttpActionResult GetItem(int id)
{ 
    IQueryable<object> results;
    return Ok(results);
}

在Web API中关于操作结果的更多信息可以在这里找到:

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接