c# - 从终结点地址 WCF 服务生成客户端代理

标签 c# wcf wcf-binding

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

我的两个契约(Contract)定义了不同的请求/响应。 IServiceTCP 提供类似管理员的方法,并在 IServiceHttp 中提供类似用户的方法。

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

看来我可以提供一个指向将附加到服务基地址的端点的地址。由于我托管在 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>

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

谢谢,

最佳答案

不确定是否可以在不创建两个服务的情况下实现。如果您尝试创建两个端点,那么您应该尝试这样做: 为两个端点提供不同的服务名称:

<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.

关于c# - 从终结点地址 WCF 服务生成客户端代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28726948/

相关文章:

c# - 回复 Mailkit 中的邮件

c# - SelectedValue 在 DropDownList 中回发时失败

c# - C# winform中的excel列选择查询

WCF REST Svc GET 返回 HTML

wcf - 为 wcf 添加服务引用的问题

wcf - 在为 WCF REST 服务的自定义(反)序列化实现 IDispatchMessageFormatter 时如何读取 Message 对象的主体?

c# - 抽象出复合标识值以用于业务逻辑?

c# - 将 URI 参数映射到参数对象的属性?

asp.net - 在ASP.NET + WCF下长时间运行的线程进程

wcf - bindingConfiguration 与 bindingName