我使用WCF和C#创建了一个Web服务,目的是通过网页和Android应用程序交换一些数据。
我是WCF的新手,但我设法配置了2个端点的webservice,它返回来自每个webservice操作的xml和json数据格式。
我的问题是返回数据的大小。当然Json是更轻的thab xml,但仍然不够。所以我决定尝试两种选择:
我可以在不同的端点上设置每个端点,但不知道如何让它们中的任何一个工作。当我尝试打开webservice端点url正确调用一个简单的hello world函数时,我的Web浏览器不会返回我指定的字节串。它什么都不返回,或者说“目的地无法到达”。
我必须提到webservice操作是为了返回对象和对象列表。
我想要实现的是拥有各种端点和一个Web操作实现。我不想重写所有函数来返回Stream并且在任何地方都有重复的函数。
如果有人可以提供帮助或放弃建议,我将不胜感激。
<system.serviceModel>
<bindings>
<customBinding>
<binding name="gzipCustomBinding">
<gzipMessageEncoding innerMessageEncoding="textMessageEncoding" />
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="WcfService1.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="RESTEndpointBehavior">
<webHttp helpEnabled="true"/>
</behavior>
<behavior name="JsonEndpointBehavior">
<webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json"/>
</behavior>
<behavior name="ProtoBufSerializationBehavior">
<ProtoBufSerialization/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
<service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="RESTEndpointBehavior" contract="WcfService1.IService1" />
<endpoint address="json" binding="webHttpBinding" behaviorConfiguration="JsonEndpointBehavior" contract="WcfService1.IService1" />
<endpoint address="proto" binding="basicHttpBinding" behaviorConfiguration="ProtoBufSerializationBehavior" contract="WcfService1.IService1" bindingConfiguration="MtomBinding" />
<endpoint address="gzip" binding="customBinding" contract="WcfService1.IService1" bindingName="gzipCustomBinding" bindingConfiguration="gzipCustomBinding" />
</service>
</services>
<extensions>
<behaviorExtensions>
<add name="ProtoBufSerialization" type="ProtoBuf.ServiceModel.ProtoBehaviorExtension, protobuf-net"/>
</behaviorExtensions>
<bindingElementExtensions>
<add name="gzipMessageEncoding" type="Microsoft.Samples.GZipEncoder.GZipMessageEncodingElement, GZipEncoder, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bindingElementExtensions>
</extensions>
</system.serviceModel>