c# - WCF SOAP 服务不能返回 JSON 作为输出吗?

标签 c# web-services wcf rest soap

历史


我基本上是一名前端 (android) 开发人员,从未创建过 Web 服务 相反,我处于消费端。 现在,这个 WCF 业务势不可挡,我相信它非常复杂,而且学习曲线陡峭。

任务


我需要制作一个简单的 SOAP 服务,hello world 目前需要一个输入 XML,但返回 JSON。

我不确定为什么我们在互联网上没有类似的查询,这让我想知道这是否根本不可能?。

这是我目前所拥有的。

目前的进展


我的契约(Contract)

[ServiceContract]
    public interface IHelloWorldService
    {
        [OperationContract]
        String GetMessage(String name);
    }

我的契约(Contract)实现

public string GetMessage(string name)
        {
            return "Hello World from " + name + "!";
        }

我的服务配置(在 Web.Config 中。我在 asp.net 网站上托管了这个服务)

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="WebBehavior">
          <webHttp defaultOutgoingResponseFormat="Json" />
        </behavior>
      </endpointBehaviors>
    </behaviors>

    <services>
      <service name="MyWcfServices.HelloWorldService"          behaviorConfiguration="MyServiceTypeBehaviors">
        <endpoint address="" binding="wsHttpBinding"       behaviorConfiguration="WebBehavior"     contract="MyWcfServices.IHelloWorldService"/>
        <endpoint contract="IMetadataExchange"            binding="mexHttpBinding" address="mex"/>
      </service>
    </services>
  </system.serviceModel>

问题


  1. SOAP 是否与 XML 紧密相关?这样您就无法将 JSON 作为输出发送?
  2. 要将 JSON 作为输出发送,您是否需要转至 REST 范式?
  3. 我是否每次都收到 XML,因为我使用 WCFStorm fiddles 和 HTTP header 并默认发送 XML mime 类型?
  4. 如何测试返回 JSON 的 WCF 服务?我有任何测试客户端吗?我下载了一个名为 Wizdler 的 Chrome 扩展,但出于某种原因,它只适用于绑定(bind)“basicHttpBinding”。有人告诉我,如果我想制作 SOAP 服务,则不能使用此绑定(bind)。

如果你们能指出我正确的方向,我将非常感激。此外,我在这个网络服务集会上只有 2 天大,所以我为我的天真道歉。

最佳答案

SOAP 完全依赖 XML 来提供消息服务,因此如果您真的想要/需要返回 JSON,那么您需要将它包装在 SOAP XML 主体的 CDATA 中。然而,与 SOAP 不同的是,REST 不必使用 XML 来提供响应,因此您可以输出其他格式的数据,例如 JSON。

http://blog.smartbear.com/apis/understanding-soap-and-rest-basics/

您可能需要考虑使用 WCF 来提供 REST 服务,而不是基于 SOAP 的服务。

https://msdn.microsoft.com/en-us/magazine/dd315413.aspx

关于c# - WCF SOAP 服务不能返回 JSON 作为输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353703/

相关文章:

web-services - 如何在 Finch 中绑定(bind)请求正文

wcf - 为 iis 托管服务命名 WCF 端点的最佳实践?

wcf - 如何从 WP7 使用 WCF REST 服务

c# - MVC 在布局代码之前执行 View 代码并破坏我的脚本顺序

c# - MS 测试断言检查

c# - 如何在 SlickGrid 中的特定行上设置行背景颜色

c# - Caliburn.Micro 让它将 MainView 中的 UserControls 绑定(bind)到他们的 ViewModels

web-services - 如何在 Spring Tool Suite 中调试 Spring Boot 应用程序

c# - 提高异步网络调用的性能

asp.net - jQuery、WCF 和 ASP.NET