WCF服务方法返回json或soap
我读过很多关于在 WCF 方法中检索/返回 json 对象的文章。如果我错了,请纠正我:除了在服务方法之前的 WebInvoke 之外,在配置中添加端点和 WebHTTp 行为可以使服务方法返回 json 对象。
webinvoke 的使用使得该方法非常特定于某种格式(此处为 json)。问题是我已经有一个 WCF SOAP 服务,并且我想重用该服务方法以便能够返回 XML 或 JSON 对象。有没有办法使方法通用并根据使用的端点或用于访问我的服务方法的平台更改响应格式?
I have been reading lot of posts on retrieving/returning json objects in a WCF method. Correct me if I am wrong: Adding an endpoint and WebHTTp behavior in the config in addition to WebInvoke before a service method enables json objects to be returned by a service method.
The use of webinvoke makes the method very specific to a certain format (json here). The issue is I already have a WCF SOAP service and I want to reuse the service methods to be able to return both XML or JSON objects. Is there a way to make the methods generic and change the response format based on the endpoints used or the platforms used to access my service method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,这是可能的。 JSON 和 SOAP 需要不同的绑定,因此您的服务需要两个端点 - 第一个具有
webHttpBinding
和webHttp
端点行为,第二个具有basicHttpBinding
或其他面向 SOAP 的绑定。这些端点必须具有不同的相对地址。如果您想在 REST 服务中支持 JSON 和 XML(POX 而非 SOAP)格式,您可以通过在
webHttp< 中定义
automaticFormatSelectionEnabled="true"
在 WCF 4 中的同一端点上实现此操作/code> 用于 REST 端点的行为。这允许端点返回 JSON 或 XML 格式的数据。格式的选择基于传入请求的格式,因此 JSON 格式的请求将获得 JSON 格式的响应,XML 格式的请求将获得 XML 格式的响应。Yes it is possible. JSON and SOAP need different bindings so your service needs two endpoints - one with
webHttpBinding
andwebHttp
endpoint behavior and second withbasicHttpBinding
or other SOAP oriented binding. These endpoints must have different relative addresses.If you want to support both JSON and XML (POX not SOAP) formats in REST service you can do it on the same endpoint in WCF 4 by defining
automaticFormatSelectionEnabled="true"
in thewebHttp
behavior used for the REST endpoint. This allows the endpoint to return the data formatted either as JSON or as XML. The choice of the format is based on the format of incoming request so a request in JSON will get a response in JSON and a request in XML will get a response in XML.