如何禁用内容协商并始终从 WCF 数据服务返回 JSON?

发布于 2024-12-13 04:10:28 字数 470 浏览 1 评论 0原文

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

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

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

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

Let's say I have a northwind database and I use ADO.NET Entity Data Model which I automatically generate from the tables in database. Then I add a new WCF data service that inherits from DataService. When I start the web application, that runs the service I can request data like this:
http://machine/Northwind.svc/Orders

This will return all orders from order table in atom/xml format. The problem is I do not want XML. I want JSON. I think I tried all kinds of settings (web.config) and attributes in my application, but I still get XML. No matter what. I can only get JSON, when I use fiddler and change the request header to accept JSON.

I do not like the concept of content negotiation. I want always to return data in JSON format. How can I achieve that?

Keep in mind that I did not create any model objects, they are automatically created based on database tables and relationships.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如若梦似彩虹 2024-12-20 04:10:28

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

Well - content negotiation comes with HTTP. In any case, you could intercept the incoming request and add/overwrite the Accept header to always specify the JSON. There's a sample how to support JSONP which uses a similar trick, I think you should be able to modify it to always return JSON as well. http://archive.msdn.microsoft.com/DataServicesJSONP.

毁梦 2024-12-20 04:10:28

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

The behavior you criticize is defined by specification of OData protocol. OData defaults to Atom and client can control media type of the representation either by Accept HTTP header or by $format parameter in query string (but I'm not sure if WCF Data services already support this).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文