2009-08-23 67 views
4

我有一個客戶端和服務器方案,其中一個服務安裝在客戶端上,另一個服務在服務器上。當這些安裝在不同的機器上時,我沒有任何問題。但是,我希望能夠在同一臺計算機上同時安裝客戶端服務和服務器服務。我可以將它們設置爲使用不同的端口,但是我希望使用單個端口來完成此操作。如果兩個應用程序使用不同的端點地址,兩個應用程序可以共享相同的WCF NetTcpBinding端口嗎?

我已啓用並啓動Net.Tcp端口共享服務Windows服務。我首先啓動服務器服務。當我嘗試啓動客戶服務,我在執行serviceHost.Open()出現以下情況例外:

The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the URI is already registered with the service.

下面是源代碼。服務器和客戶端使用不同的端點地址如下:

Server服務:

ServiceHost serviceHost = new ServiceHost(typeof(ServerService), 
    new Uri("net.tcp://localhost:50000"); 
NetTcpBinding binding = new NetTcpBinding(); 
serviceHost.AddServiceEndpoint(typeof(IServerService), 
    binding, "ServerService"); 
serviceHost.Open(); 

客戶服務:

ServiceHost serviceHost = new ServiceHost(typeof(ClientService), 
    new Uri("net.tcp://localhost:50000"); 
NetTcpBinding binding = new NetTcpBinding(); 
serviceHost.AddServiceEndpoint(typeof(IClientService), 
    binding, "ClientService"); 
serviceHost.Open(); 

回答

4

我只是解決它使基URI的不同過程ServiceHost的實例化。修改後的代碼如下:

服務器

ServiceHost serviceHost = new ServiceHost(typeof(ServerService), 
    new Uri("net.tcp://localhost:50000/Server"); 
... 

客戶

ServiceHost serviceHost = new ServiceHost(typeof(ClientService), 
    new Uri("net.tcp://localhost:50000/Client"); 
... 
相關問題