如何从IQueryable <t>返回HttpStatusCode?

时间:2016-02-09 10:09:37

标签: c# asp.net-web-api2 http-status-codes

我正在编写一个C# WebApi 2网络服务,我对从HttpStatusCode网络服务函数返回IQueryable<T>有疑问。

如果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");
}

我可以请一点帮忙吗?

2 个答案:

答案 0 :(得分:5)

您可以使用相应的状态代码

抛出HttpResponseException
public IQueryable<T> GetItems()
{
   throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("Any object") });
}

答案 1 :(得分:0)

在第一种情况下,你仍然会在Content方法中返回对象,例如:

public IHttpActionResult GetItem(int id)
{
    return Content(HttpStatusCode.Unauthorized, "Any object");
}

执行该方法时,您会看到"Any object"返回给客户端。在Web API 2中,IHttpActionResult本质上是一个围绕HttpResponseMessage的奇特工厂。如果忽略方法的返回类型为IHttpActionResult,则可以通过替换&#34;任何对象&#34;来返回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