2014-06-11 48 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