2014-06-11 31 views
0

我正在使用OData和EF测试Web API项目以从SQL Server视图返回结果。这花了一段时间,但我终于搞定了。接下来我要做的是使用不同的格式化程序来返回结果。作为XML的Web API OData格式

根据this link我应该有使用$ format parm的atom,json和xml选项。但是这个parm似乎被忽略了。挖掘更多我找到类似于this one的文章,说你必须添加命令来允许$ format parm工作,但我没有提到“Configuration.Formatters.XmlFormatter.AddQueryStringMapping”,这是我在其他几篇文章中发现的。我已经看到引用测试与提琴手和更新返回JSON例如,但我想使用$格式,所以我也可以在SSIS中拉不同的格式。

我发现最接近的是post,但除了Fiddler之外,XML还没有解决方案,并且JSON $ format命令不适用于我。我认为过去4个月可能会发生变化。

有无论如何获得$格式来使用XML?

+0

我不确定我是否想将其标记为解决方案,但实现这项工作的一个非常可怕的方法是删除JSON作为选项。在WebApConfig中,我可以添加命令config.Formatters.Remove(config.Formatters.JsonFormatter),并且这会将JSON作为默认值关闭并返回XML。但是,就像我说的,这似乎是一个糟糕的解决方案。 – pretzelb

+0

[根据此SO回答](http://stackoverflow.com/a/25417419/1520850)如果您使用的是OData v4 - 根本无法完成 - 但如果您确实弄清楚了,请回复。 – bkwdesign

回答

0

我想说这是VB.Net版本的代码的问题。它似乎工作正常,如果你切换到C#。

0

AddQueryStringMapping是在类的扩展方法: System.Net.Http.Formatting.MediaTypeFormatterExtensions

如果不工作,就可以按照例如 https://gist.github.com/raghuramn/5556691始终设置请求接受标头 应用/ xml或application /原子+ xml的。

如果您有任何其他问题,请让我知道。

+0

我已经添加了对System.Net.Http.Formatting.MediaTypeFormatter的引用,但与引用的第二个链接不同,我仍然无法看到AddQueryStringMapping作为GlobalConfiguration.Configuration.Formatters.JsonFormatter之类的选项的选项。这篇文章中对global.asax的修改确实没什么太大的意义,所以虽然它一定是我做错了,但我看不到它。 – pretzelb

+0

在代码中使用“using System.Net.Http.Formatting”,否则可以直接调用扩展方法“System.Net.Http.Formatting.MediaTypeFormatterExtensions.AddQueryStringMapping(formatter,”$ format“,”json“,”应用/ JSON “)”。顺便说一下,webapi nuget包“Microsoft.AspNet.WebApi.Core”是否添加到您的项目中? –

+0

这就是让我困惑的地方。我确实有正确的“使用”声明。 Intellisense直到我寻找“AddQueryStringMapping”为止。它只是不在列表中。这就是为什么我开始线程。我只能想,也许我的安装已损坏,但它会部分运行,这很奇怪。我的另一个想法是该方法被拿走了一个更新的版本,但听起来应该在那里。 – pretzelb