2011-07-25 97 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

相關問題