我正在编写一个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");
}
我可以请一点帮忙吗?
答案 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