我们正在考虑结合 Odata 和 WebAPI 来创建一个 api。我正在研究的一件事是将 OData 数据服务映射到与 WebApi 控制器相同的 URL。我们可以使用 OData 的强大功能及其查询支持来提供只读信息。然后使用 WebApi 控制器方法接受更新。通过这种方式,我们可以更好地控制发送到系统中的任何更新。到目前为止,我已经尝试通过路由来做到这一点。
DataServiceHostFactory factory = new DataServiceHostFactory();
RouteTable.Routes.Add(new ServiceRoute("api/SDAApi", factory, typeof(ReadService)));
所以我向我的 ReadService 添加了一个路由,它是 Odata 数据服务。SDAApi 与我的控制器名称匹配。在我的控制器上,我有一个方法 SoftwareDownloadRequestsPost,它与我从 ReadService 请求的集合 - SoftwareDownloadRequests 相匹配。
当我在浏览器中访问 url ~/Api/SDAApi/SoftwareDownloadRequests 时,我得到了预期的项目列表。但是,当我使用简单的表单帖子向 url 发布帖子时,我会收到回复。“不支持内容类型‘application/x-www-form-urlencoded’。” 由于此表单帖子在我使用不同的网址时有效,因此我假设它是由冲突引起的。
所以回到我的问题,这可能吗?以及如何解决我的错误的任何想法?
我正在使用 VS 2012 RC 和 .NET 4.5