2011-04-22 77 views
3

我一直在阅读很多关于在WCF方法中检索/返回json对象的帖子。如果我错了,请纠正我:在服务方法之前,除了WebInvoke之外,还要在配置中添加端点和WebHTTp行为,以便使服务方法返回json对象。WCF服务方法返回JSON或肥皂

webinvoke的使用使得该方法非常特定于某种格式(此处为json)。问题是我已经有了一个WCF SOAP服务,我想重用这些服务方法来返回XML或JSON对象。有没有办法使方法通用,并根据所用的端点或用于访问我的服务方法的平台更改响应格式?

回答

6

是的,这是可能的。 JSON和SOAP需要不同的绑定,因此您的服务需要两个端点 - 一个端点具有webHttpBindingwebHttp端点行为,另一个端点具有basicHttpBinding或其他面向SOAP的绑定。这些端点必须具有不同的相对地址。

如果您希望在REST服务中同时支持JSON和XML(POX not SOAP)格式,您可以在用于REST端点的webHttp行为中定义automaticFormatSelectionEnabled="true"行为,从而在WCF 4中的相同端点上执行此操作。这允许端点返回格式为JSON或XML格式的数据。格式的选择基于传入请求的格式,因此JSON中的请求将获得JSON中的响应,并且XML中的请求将获得XML中的响应。

+0

谢谢!但是由于我已经运行了一个soap服务,我希望格式能够在SOAP和JSON之间切换。那可能吗?将尝试。 – 2011-04-22 16:19:28

+0

不,这是不可能的,因为SOAP和JSON需要不同的端点。 – 2011-04-22 16:44:14