繁体   English   中英

WCF-从客户端和服务器端调用相同的服务

[英]WCF - call same service from client and server side

我有一个简单的WCF服务,可以通过服务引用从后面的代码中调用服务器端。 它用于验证和工作,并且由Visual Studio自动设置,并且我认为使用SOAP是因为绑定是wsHttpBinding。

我想使用相同的WCF服务,但使用ajax()从jQuery称为客户端。 我正在尝试通过这些说明来实现它。

但是,如果我进行了更改以使客户端调用能够正常工作,则必须添加修饰符,在该修饰符之下,我认为这将破坏服务器端的作用,并更改web.config中的system.serviceModel部分。

[WebInvoke(Method = "POST",
    BodyStyle = WebMessageBodyStyle.Wrapped,
    ResponseFormat = WebMessageFormat.Json,
    RequestFormat= WebMessageFormat.Json) ]

我如何拥有可以从服务器端和客户端(jQuery / ajax)调用的WCF服务?

或者换种说法,这可能是措辞不正确,端点可以有多个绑定吗?

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/>行为的终结点行为-或者您需要具有一个* .svc文件,该文件使用WebServiceHost (而不是普通的ServiceHost )来承载REST服务。

如您所见,您现在有两个单独的终结点(虚拟目录中有两个单独的* .svc文件),两个单独的地址-但它们共享相同的协定(定义相同的操作)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM