2011-07-25 82 views
3

可能重复:
Hosting Multiple TCP WCF service Endpoints on single Port如何在一个端口上运行多个WCF服务?

我有一个WCF服务应用程序运行4个服务,而这一切工作,如果使用4个独立的端口伟大和我的本地机器上运行时,托管在控制台应用程序中。这很好的发展,但现在我想将它移动到Server 2008的计算机上的内部网络,而IT男孩并不是真正感到高兴的机器上打开了端口的转换。

我知道我可以在同一个端口上运行多个服务,但我似乎无法找到任何告诉我如何这样做。大多数情况下,第一个服务启动,然后第二个启动失败。

任何人都可以指向我的博客或文章,解释如何做到这一点?

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

THX,戴夫

+0

你是对的,它是重复的。我的搜索词不知何故没有找到一个昨天,我很抱歉......我 – DaveN59

回答

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应用的流量被多路复用到单个TCP端口HTTP.SYS模式已成为Windows平台上的标准。这提供了控制的公共点,防火墙管理员同时允许应用程序开发人员,以尽量减少建设新的应用程序,可以利用网络的部署成本。

+0

昨天发现被引用的博客文章较早,但希望的是更好的解决方案。笔者承认,在他的职位是不理想的解决方案,因为它使用硬编码的URI,而不是使用配置文件,除其他事项。端口共享方法似乎可能是一个更好的解决方案... – DaveN59

相关问题