【问题标题】:Generate client proxy from endpoint address WCF service从端点地址 WCF 服务生成客户端代理
【发布时间】:2015-02-25 18:35:06
【问题描述】:

具有两个端点的 WCF 服务是否可以为客户端提供一种从特定端点生成代理的方法?我目前正在使用 VS 2013 中的“添加服务参考”功能,它将获得两个合同定义的所有类。

我的两份合同定义了不同的请求/响应。 IServiceTCP 提供类似管理员的方法和在 IServiceHttp 中类似用户的方法。

由于我有一个只使用 HTTP 进行通信的客户端并且他不在同一个网络中(使 tcp 中的端点无用),我想为他提供一种方法来生成他的代理,只从 http 合同中获取所需的类.

看来我可以为端点提供一个地址,该地址将附加到服务的基地址。由于我托管在 IIS 服务器后面,如果我将地址“testhttp”提供给我的端点,它将被解析为“http://localhost/MyService/Service.svc/testhttp”。我没有找到让客户使用该地址的方法。

 <service name="Namespace.Service" behaviorConfiguration="ServiceBehaviorA">
    <endpoint binding="wsHttpBinding" bindingConfiguration="ServiceBindingHttp" contract="Namespace.IServiceHttp"  />
    <endpoint binding="netTcpBinding" bindingConfiguration="ServiceBindingTCP" contract="Namespace.IServiceTCP" />
  </service>

我想避免创建两个服务来实现这个目的。

谢谢,

【问题讨论】:

    标签: c# wcf wcf-binding


    【解决方案1】:

    不确定是否可以在不创建两个服务的情况下实现这一点。如果您尝试创建两个端点,则应尝试以下操作: 给两个端点不同的服务名称:

    <service name="Namespace.ServiceA" behaviorConfiguration="ServiceBehaviorA">
        <endpoint binding="wsHttpBinding" bindingConfiguration="ServiceBindingHttp" contract="Namespace.IServiceHttp"  />
    </service>
    
     <service name="Namespace.ServiceB" behaviorConfiguration="ServiceBehaviorA">
        <endpoint binding="netTcpBinding" bindingConfiguration="ServiceBindingTCP" contract="Namespace.IServiceTCP" />
    </service>
    
    <serviceHostingEnvironment >
                <serviceActivations>
                    <add relativeAddress="ServiceA.svc" service="Namespace.ServiceA" />
                    <add relativeAddress="ServiceB.svc" service="Namespace.ServiceB" />
    </serviceActivations>/serviceHostingEnvironment>
    

    现在这两个端点应该可以通过

    访问了
    1. http://localhost/MyService/ServiceA.svc
    2. http://localhost/MyService/ServiceB.svc

    HTH。

    【讨论】:

    • 由于服务名必须解析为一个类,这意味着我必须创建两个服务类。 (服务 A 和服务 B)。在这一点上,使用两个服务将它们与不同的 URL 完全分开会更合乎逻辑。感谢您的宝贵时间。
    • @MathieuBourgoin 很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多