我们正在考虑将Odata和WebAPI结合起来创建一个api。我正在研究的一件事是将OData数据服务映射到与WebApi控制器相同的URL。我们可以使用OData的强大功能及其查询支持来提供只读信息。然后使用WebApi控制器方法接受更新。通过这种方式,我们可以更好地控制发送到系统的任何更新。 到目前为止,我试图通过路由来做到这一点。
DataServiceHostFactory factory = new DataServiceHostFactory();
RouteTable.Routes.Add(new ServiceRoute("api/SDAApi", factory, typeof(ReadService)));
所以我在我的ReadService中添加了一个Route,它是Odata数据服务。 SDAApi与我的控制器名称匹配。 在我的控制器上,我有一个方法SoftwareDownloadRequestsPost,它与我从ReadService - SoftwareDownloadRequests请求的集合相匹配。
当我在浏览器中获取url~ / Api / SDAApi / SoftwareDownloadRequests时,我得到了预期的项目列表。然而,当我通过一个简单的表单发布到网址的帖子时,我得到了回复。 “不支持内容类型'application / x-www-form-urlencoded'。” 由于这个表单的帖子在我使用不同的URL时起作用,我认为它是由冲突引起的。
回到我的问题,这可能吗?如果有任何想法如何解决我的错误?
我正在使用VS 2012 RC和.NET 4.5
答案 0 :(得分:0)
我想不出你想要这样做的好理由。
ASP.NET Web API在RC中公开了OData的一些重要功能(例如$ filter)。显然,未来版本中会有更多支持,尽管可能不在RTM中。