假设我有一个northwind数据库,我使用ADO.NET实体数据模型,我自动从数据库中的表生成。然后我添加一个从DataService继承的新WCF数据服务。当我启动运行服务的Web应用程序时,我可以请求这样的数据: http://machine/Northwind.svc/Orders
这将以atom / xml格式返回订单表中的所有订单。问题是我不想要XML。我想要JSON。我想我在我的应用程序中尝试了各种设置(web.config)和属性,但我仍然使用XML。无论。当我使用fiddler并更改请求标头以接受JSON时,我只能获得JSON。
我不喜欢内容协商的概念。我希望始终以JSON格式返回数据。我怎样才能做到这一点?
请记住,我没有创建任何模型对象,它们是根据数据库表和关系自动创建的。
答案 0 :(得分:2)
内容良好的协商来自HTTP。在任何情况下,您都可以拦截传入的请求并添加/覆盖Accept标头以始终指定JSON。有一个示例如何支持使用类似技巧的JSONP,我认为你应该能够修改它以便总是返回JSON。 http://archive.msdn.microsoft.com/DataServicesJSONP
答案 1 :(得分:1)
您批评的行为由specification of OData protocol定义。 OData默认为Atom,客户端可以通过Accept HTTP标头或查询字符串中的$format
参数来控制表示的媒体类型(但我不确定WCF数据服务是否已经支持此功能)。