代码之家  ›  专栏  ›  技术社区  ›  Steve

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

  •  1
  • Steve  · 技术社区  · 15 年前

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

    我想使用相同的WCF服务,但是使用ajax()从jQuery调用它的客户端。我正试图通过这些方法来实现它 instructions .

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

    如何拥有一个既可以从服务器端调用又可以从客户端调用的WCF服务(jQuery/ajax)?

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   marc_s    15 年前

    WCF中的终结点具有ABC

    • 地址
    • 合同

    因此:不,一个端点 具有多个绑定。但是你可以为同一个合同有多个端点!

    因此,如果您想在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 ServiceHost )为您提供休息服务。

    如您所见,您现在有两个独立的端点(在虚拟目录中有两个独立的*.svc文件)、两个独立的地址—但它们共享相同的约定(定义相同的操作)。