具有两个端点的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>
我想避免创建两个服务来实现此目的。
谢谢,
答案 0 :(得分:0)
不确定是否可以在不创建两项服务的情况下实现这一目标。如果您尝试创建两个端点,则应该尝试以下操作: 为两个端点提供不同的服务名称:
<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>
现在可以通过
访问两个端点