Web API,IQueryable,OData和HttpResponseMessage作为返回类型?

时间:2013-03-08 08:38:07

标签: c# asp.net-web-api odata httpresponse iqueryable

在过去的几天里,我已经看到了一些很好的例子,说明了如何使用HttpResponseMessage类型作为Web API动作的返回类型。这使得单元测试变得更加容易,因为它可以“伪造”整个HttpMessage,你会在任何正常的情况下,你需要再次实际请求使用WebClient或类似测试中的操作,并且还需要运行两个Visual Studio实例。

无论如何..让我说我想在HttpResponseMessage中使用这种方法..但我也想使用新的IQueryable-OData-thingy ..甚至可能..因为我想我会查询一个一堆HttpResponseMessages ..至少据我所知,只有一个关闭......

因此,HttpResponseMessage方法会使用IQueryable和OData“打破”整个想法......或者我是对的吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

如果response.Content是一个ObjectContent并包含IQueryable<T>IEnumerable<T>,则可以使用Queryable。如果您使用Request.CreateResponse帮助程序创建响应,则查询将起作用。此外,作为一个FYI,Task<IQueryable<T>>也会起作用。

答案 1 :(得分:1)

我设法让一个web api返回一个HttpResponseMessage,并且仍然可以通过设置mMediaPlayer.setDataSource(tracks.get(position).path); 属性来使用OData:

[EnableQuery]