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网站中托管此服务)
问题
如果你们能给我指出正确的方向,我将不胜感激。另外,我在这个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>