C# Can';WCFSOAP服务是否将JSON作为输出返回?

C# Can';WCFSOAP服务是否将JSON作为输出返回?,c#,web-services,wcf,rest,soap,C#,Web Services,Wcf,Rest,Soap,历史 我基本上是一名前端(android)开发人员,从未创建过web服务 相反,我是在消费端。 现在,WCF业务势不可挡,而且我认为它非常复杂,学习曲线陡峭 任务 我需要创建一个简单的SOAP服务,HelloWorld,它将接受一个输入XML,但返回JSON 我不知道为什么我们在互联网上没有类似的查询,有点让我怀疑这是否是不可能的 这就是我目前所拥有的 当前进度 我的合同 [ServiceContract] public interface IHelloWorldService

历史


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

任务


我需要创建一个简单的SOAP服务,HelloWorld,它将接受一个输入XML,但返回JSON

我不知道为什么我们在互联网上没有类似的查询,有点让我怀疑这是否是不可能的

这就是我目前所拥有的

当前进度


我的合同

[ServiceContract]
    public interface IHelloWorldService
    {
        [OperationContract]
        String GetMessage(String name);
    }
我的合同即将生效

public string GetMessage(string name)
        {
            return "Hello World from " + name + "!";
        }
我的服务配置(在Web.Config中。我已在asp.net网站中托管此服务)


问题


  • SOAP与XML紧密相连吗?这样您就不能发送JSON作为输出了吗
  • 要将JSON作为输出发送,您需要转到REST范式,这是真的吗
  • 我是否每次都会得到一个XML,因为我使用WCFStorm处理HTTP头并默认发送一个XML mime类型
  • 如何测试返回JSON的WCF服务?我有测试客户端吗?我下载了一个名为Wizdler的Chrome扩展,但出于某种原因,它只适用于绑定“basicHttpBinding”。有人告诉我,如果我想创建SOAP服务,就不能使用此绑定
    如果你们能给我指出正确的方向,我将不胜感激。另外,我在这个webservice coven只有2天大,所以我为我的幼稚道歉。

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

    您可能想考虑使用<代码> WCF < /C>来提供<代码> REST <代码> -Service服务,而不是<代码> SOAP基于服务。


    您不必选择一个。WCF服务可以配置为根据客户端的请求返回SOAP、XML或JSON。@EZI OP的要求是通过SOAP返回JSON。@TomRedfern我不这么认为。这将需要两个反序列化,一个用于soap,一个用于json(就像在另一个xml中返回xml一样)。为什么会有人想这么做?一个能够返回纯soap、xml或json的服务会更好吗(这可以由http协议的Accept头决定)?@TomRedfern考虑一个可以像传统web服务一样同时使用soap、restful服务或xml rpc服务的服务。是的,WCF可以做到。@EZI Tom是正确的。我想在SOAP上实现JSON。我现在意识到这是一种反常现象。事实上,我对这整件事还不熟悉。所以我犯了这个初学者的错误。我已经纠正了我的做法。我正在休息
    <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>