2

假设我有一个北风数据库,我使用 ADO.NET 实体数据模型,它是从数据库中的表自动生成的。然后我添加了一个继承自 DataService 的新 WCF 数据服务。当我启动运行服务的 Web 应用程序时,我可以请求如下数据: http://machine/Northwind.svc/Orders

这将以 atom/xml 格式从订单表返回所有订单。问题是我不想要 XML。我想要 JSON。我想我在我的应用程序中尝试了各种设置(web.config)和属性,但我仍然得到 XML。无论。当我使用提琴手并将请求标头更改为接受 JSON 时,我只能获取 JSON。

我不喜欢内容协商的概念。我希望始终以 JSON 格式返回数据。我怎样才能做到这一点?

请记住,我没有创建任何模型对象,它们是根据数据库表和关系自动创建的。

4

2 回答 2

2

好吧 - 内容协商随 HTTP 一起提供。在任何情况下,您都可以拦截传入的请求并添加/覆盖 Accept 标头以始终指定 JSON。有一个示例如何支持使用类似技巧的 JSONP,我认为您应该能够修改它以始终返回 JSON。http://archive.msdn.microsoft.com/DataServicesJSONP

于 2011-11-02T22:44:14.103 回答
1

您批评的行为由OData 协议规范定义。OData 默认为 Atom,客户端可以通过 Accept HTTP 标头或$format查询字符串中的参数来控制表示的媒体类型(但我不确定 WCF 数据服务是否已经支持这一点)。

于 2011-11-02T11:14:48.527 回答