如何在一个端口上运行多个WCF服务?

时间:2011-07-25 19:25:27

标签: c# windows-server-2008-r2

  

可能重复:
  Hosting Multiple TCP WCF service Endpoints on single Port

我有一个从一个WCF服务应用程序运行的4个服务,如果使用4个独立的端口并且在我的本地计算机上运行,​​它在托管在控制台应用程序中的情况下运行良好。这对于开发来说很好,但是现在我想把它移到Intranet上的Server 2008机器上,IT男孩们对在这台机器上打开大量端口感到高兴。

我知道我可以在同一个端口上运行多个服务,但我似乎找不到任何告诉我如何操作的东西。大多数情况下,第一个服务启动,然后第二个服务无法启动。

有人能指出我的博客或文章解释如何做到这一点吗?

我还需要弄清楚如何在WAS中托管服务,但这可能是一个单独的问题。我正在使用TCP协议,如果这有任何区别......

Thx,Dave

1 个答案:

答案 0 :(得分:8)

这看起来可以帮到你。

http://blogs.msdn.com/b/dkaufman/archive/2008/06/13/hosting-multiple-service-implementation-on-the-same-port-with-wcf.aspx

这表明您需要正确设置服务行为和端点:

// Add behavior for Services - enable WSDL access
ServiceMetadataBehavior serviceABehavior = new ServiceMetadataBehavior();
serviceABehavior.HttpGetEnabled = true;
serviceABehavior.HttpGetUrl = new Uri("http://localhost:8080/ServiceA");
serviceAHost.Description.Behaviors.Add(serviceABehavior);

ServiceMetadataBehavior serviceBBehavior = new ServiceMetadataBehavior();
serviceBBehavior.HttpGetEnabled = true;
serviceBBehavior.HttpGetUrl = new Uri("http://localhost:8080/ServiceB");
serviceBHost.Description.Behaviors.Add(serviceBBehavior);

// Create basicHttpBinding endpoint at http://localhost:8080/ServiceA/  
serviceAHost.AddServiceEndpoint(serviceAContractType, new BasicHttpBinding(), 
"http://localhost:8080/ServiceA");
// Create basicHttpBinding endpoint at http://localhost:8080/ServiceB/  
serviceBHost.AddServiceEndpoint(serviceBContractType, new BasicHttpBinding(), 
"http://localhost:8080/ServiceB");

或Net.TCP端口共享。

http://msdn.microsoft.com/en-us/library/ms734772.aspx

  

HTTP.SYS模型已成为Windows平台的标准,其中许多不同HTTP应用程序的流量被多路复用到单个TCP端口上。这为防火墙管理员提供了一个共同的控制点,同时允许应用程序开发人员最大限度地降低构建可以利用网络的新应用程序的部署成本。