我们有一项服务,其某些设置仅通过 net.tcp 支持。添加另一个端点的最佳方法是什么?我需要创建一个全新的主机吗?

有帮助吗?

解决方案

服务可以在单个主机内具有多个端点,但每个端点必须具有地址、绑定和契约的唯一组合。对于 IIS 托管的服务(即 .SVC 文件),只需将端点的地址设置为 相对的 URI 并确保 Visual Studio 或 wsdl.exe 生成的客户端在其构造函数中指定终结点的名称。

另请参阅 MSDN 文章 多个端点.

其他提示

您可以在服务器或客户端上定义多个端点。

要在客户端上执行此操作,您只需使用具有不同名称的新端点编辑 app.config 文件,然后在创建新客户端时进行定义。

例如,如果您的客户端应用程序中有一个端点,例如:

<endpoint address="https://yourdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService" />

您通过以下方式致电:

YourServiceClient client = new YourServiceClient();

您可以使用新名称添加新端点:

<endpoint address="https://yourotherdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService_ENDPOINT2" />

您可以通过以下方式致电:

YourServiceClient client = new YourServiceClient("BasicHttpBinding_IYourService_ENDPOINT2");

我刚刚更改了上面的域,但是如果您创建了新的绑定配置部分,则只需更改“bindingConfiguration”值即可。

如果您当前使用 IIS 作为主机,则需要创建一个全新的主机 - IIS 仅支持 HTTP,而不支持 TCP 绑定。但是,如果您使用的是 WAS 或 Windows 服务,那么您只需创建一个新的 net.tcp 端点即可。

我们可以为同一服务使用多个端点。我们也可以通过以下方式配置Web配置

 <service name="MessagePatternDemo.Service1">  
 <endpoint name="ep1" address="/ep1" binding="basicHttpBinding" 
   contract="MessagePatternDemo.IService1"/>  
 <endpoint name="ep2" address="/ep2" binding="wsHttpBinding"  
   contract="MessagePatternDemo.IService1" />  
 <endpoint name="mex" contract="IMetadataExchange" address="mex"  
   binding="mexHttpBinding" />  
 </service>   
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top