我有一个简单的WCF服务,我通过服务引用从代码后面调用服务器端。它用于验证和工作,并由Visual Studio自动设置并使用SOAP我认为因为绑定是wsHttpBinding。
我想使用相同的WCF服务,但是使用ajax()从jQuery调用它的客户端。我正试图通过这些instructions来实现它。
但是,如果我进行更改以使客户端调用工作,我必须添加下面的装饰,我认为这将破坏服务器端的工作,并且还更改web.config中的system.serviceModel部分。
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json,
RequestFormat= WebMessageFormat.Json) ]
如何从服务器端和客户端(jQuery / ajax)调用WCF服务?
或换句话说,这可能是错误的措辞,端点是否可以有多个绑定?
答案 0 :(得分:0)
WCF中的端点有一个ABC
因此:不,单个端点不能具有多个绑定。但是你可以为同一个合同设置多个端点!
因此,如果您希望通过SOAP和REST公开两个具有基本相同功能的方法,则需要有两个端点。
您可以定义自己的服务方法,以便从SOAP和REST中调用,如您提到的链接所示。
您需要的是两个独立的端点:
<services>
<service name="YourService">
<endpoint
address="http://YourServer/YourVirtualDir/YourService.svc"
binding="wsHttpBinding"
contract="IYourService" />
<endpoint
address="http://YourServer/YourVirtualDir/YourService2.svc"
binding="webHttpBinding"
behaviorConfiguration="webCallable"
contract="IYourService" />
</service>
</services>
您必须定义包含<webHttp/>
行为的端点行为 - 或者您需要一个使用WebServiceHost
的* .svc文件(而不是普通ServiceHost
)托管您的REST服务。
如您所见,您现在有两个单独的端点(在vritual目录中有两个单独的* .svc文件),两个单独的地址 - 但两者共享相同的合同(定义相同的操作)。