从WebAPI返回PageResult而不是格式化为OData

时间:2013-03-27 18:37:48

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

我正在尝试将基于WebAPI的应用程序从WebAPI RC迁移到发布版本。它接受一些查询参数,并返回ATOM格式的OData。由于它是一个正在运行的服务,我需要保持当前的行为。

我已将API方法更改为返回带有我的数据的PageResult<T>。根据MSDN上的 Supporting OData Query Options 文章,这应该是我需要做的全部,但它不起作用。我得到了结果,但它总是格式化为JSON。我已尝试将Accept请求标题更改为application/atom+xml,但似乎没有任何区别。

我也尝试在我的WebApiConfig中添加以下行,但效果不明显:

configuration.EnableQuerySupport();
configuration.Formatters.InsertRange(0, ODataMediaTypeFormatters.Create());

我尝试清除现有的格式化程序,只是为了看看会发生什么。我刚回来406 Not Acceptable错误。所以似乎OData格式化程序可能没有报告他们可以处理请求/响应?

1 个答案:

答案 0 :(得分:1)

请浏览此博客文章,了解如何启用OData:

http://blogs.msdn.com/b/webdev/archive/2013/01/29/getting-started-with-asp-net-webapi-odata-in-3-simple-steps.aspx

您缺少OData路由 - 格式化程序需要路由才能工作。