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

本文关键字:格式化 OData WebAPI 返回 PageResult | 更新日期: 2023-09-27 18:06:24

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

我已经改变了API方法返回一个PageResult<T>与我的数据在它。根据MSDN上的支持OData查询选项文章,这应该是我需要做的一切,但它不起作用。我得到结果,但它总是被格式化为JSON。我试过将Accept请求标头更改为application/atom+xml,但似乎没有任何区别。

我还尝试在我的WebApiConfig中添加以下行,但没有明显的效果:

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

我尝试清除现有的格式化程序,只是想看看会发生什么。我只是回到406 Not Acceptable错误。因此,似乎OData格式化程序没有报告它们可以处理请求/响应?

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

请阅读这篇博文了解如何启用OData:

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

你缺少了一个OData路由——该路由是格式化程序工作所必需的。