Web API OData格式为XML

Web API OData格式为XML,odata,asp.net-web-api,asp.net-web-api2,Odata,Asp.net Web Api,Asp.net Web Api2,我正在测试一个WebAPI项目,使用OData和EF从SQLServer视图返回结果。这花了一段时间,但我终于让它工作了。我接下来要做的是使用不同的格式化程序返回结果 据我所知,我应该有使用$parm格式的atom、json和xml选项。但这一点似乎被忽视了。我还发现了一些类似的文章,比如说必须添加命令才能让$format parm工作,但我没有在其他几篇文章中提到“Configuration.Formatters.XmlFormatter.AddQueryStringMapping”。例如,我

我正在测试一个WebAPI项目,使用OData和EF从SQLServer视图返回结果。这花了一段时间,但我终于让它工作了。我接下来要做的是使用不同的格式化程序返回结果

据我所知,我应该有使用$parm格式的atom、json和xml选项。但这一点似乎被忽视了。我还发现了一些类似的文章,比如说必须添加命令才能让$format parm工作,但我没有在其他几篇文章中提到“Configuration.Formatters.XmlFormatter.AddQueryStringMapping”。例如,我看到过使用Fiddler进行测试和更新以返回JSON的引用,但我想使用$format,这样我也可以在SSI中提取不同的格式

我发现的最接近的东西是这个,但是除了Fiddler和JSON$format命令对我不起作用之外,没有XML的解决方案。我想在过去的4个月里,情况可能发生了变化


是否仍然可以使用$format来处理XML?

AddQueryStringMapping是类中的一个扩展方法:
System.Net.Http.Formatting.MediaTypeFormatterExtensions

如果这不起作用,你可以效仿这个例子 始终将请求接受标头设置为 application/xml或application/atom+xml


如果您还有其他问题,请告诉我。

我想说这是VB.Net版本代码的问题。如果你换成C#,效果似乎不错

我已经添加了对System.Net.Http.Formatting.MediaTypeFormatter的引用,但与我引用的第二个链接不同,我仍然无法将AddQueryStringMapping作为GlobalConfiguration.Configuration.Formatters.JsonFormatter之类的选项。那篇文章中对global.asax的改动实在不多,所以虽然我肯定是做错了什么,但我看不到。在代码中使用“using System.Net.Http.Formatting”添加,否则可以直接调用扩展方法“System.Net.Http.Formatting.MediaTypeFormatterExtensions.AddQueryStringMapping(formatter,$format,”“应用程序/json”)”。顺便问一下,您的项目中是否添加了webapi nuget包“Microsoft.AspNet.webapi.Core”?这让我很困惑。我确实有正确的“使用”语句。Intellisense的响应与预期一致,直到我查找“AddQueryStringMapping”。它只是不在清单上。这就是我开始写这篇文章的原因。我只能想,也许我有一个损坏的安装,但这将是奇怪的,它将部分功能。我的另一个想法是,这个方法在一个更新的版本中被删除了,但听起来它应该存在。您使用的是最新版本的webapi 5.2吗?如果没有,您可以尝试升级webapi版本。我认为问题可能在于您选择哪种语言。我刚刚创建了一个简单的C#WebApi项目,它可以按预期工作。但是同样的事情不适用于VB WebApi项目。这在VB.Net项目中不起作用有什么原因吗?我还不确定是否要将其标记为解决方案,但一个非常可怕的方法是将JSON作为选项删除。在WebApConfig中,我可以添加命令config.Formatters.Remove(config.Formatters.JsonFormatter),这将取消JSON作为默认值并返回XML。但是,正如我所说,这似乎是一个糟糕的解决方案。如果你使用的是ODataV4,你根本无法做到,但是如果你想明白了,请发回。