定义两个端点,与服务实现相同的合同。定义首先使用SOAP,那么第二个使用JSON:
<service name="YourService">
<endpoint address="rest"
binding="webHttpBinding"
contract="IYourService"
behaviorConfiguration="RestBehavior"/>
<endpoint address="soap"
binding="wsHttpBinding"
contract="IYourService"/>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
<endpointBehaviors>
<behavior name="RestBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
这时会出现在http://.../yourservice.svc/soap,另一个端点在http://.../yourservice.svc/rest
[编辑]回答您的意见,我说的是更换本节:
<services>
<service name="WebApi.SoapApi" behaviorConfiguration="ApiBehavior">
<endpoint address="basic" bindingNamespace="http://api.myservice.dk/Basic" contract="WebApi.IApi" binding="basicHttpBinding" bindingConfiguration="ApiBinding" />
</service>
<service name="WebApi.JsonApi" behaviorConfiguration="ApiBehavior">
<endpoint address="web" bindingNamespace="http://api.myservice.dk/Web" contract="WebApi.IApi" binding="webHttpBinding" bindingConfiguration="ApiBinding" behaviorConfiguration="JsonBehavior" />
</service>
</services>
由:
<services>
<service name="WebApi.UniqueApi" behaviorConfiguration="ApiBehavior">
<endpoint address="basic" bindingNamespace="http://api.myservice.dk/Basic" contract="WebApi.IApi" binding="basicHttpBinding" bindingConfiguration="ApiBinding" />
<endpoint address="web" bindingNamespace="http://api.myservice.dk/Web" contract="WebApi.IApi" binding="webHttpBinding" bindingConfiguration="ApiBinding" behaviorConfiguration="JsonBehavior" />
</service>
</services>
一个服务,带有两个端点
** SOAP **是一种传输协议 - 其对应部分是REST。 ** JSON **是一种数据格式 - 其对应可能是XML。你正在比较苹果肥皂:-)(双关语意思) – 2011-05-11 15:22:52
如果我错了,请纠正我。你是否想从同一服务中返回xml或json? – 2011-05-11 16:07:36
对不起 - 是的,我是混合条款。但我仍然希望我的实现独立于传输协议和数据格式。 – 2011-05-11 19:53:42