C# WCF网络tcp端口共享
我有2个WCF服务,每个都托管在自己的控制台应用程序中 它们位于:C# WCF网络tcp端口共享,c#,.net,wcf,tcp,C#,.net,Wcf,Tcp,我有2个WCF服务,每个都托管在自己的控制台应用程序中 它们位于: net.tcp://computername:7777/Service1 net.tcp://computername:7777/Service2 每个人都有自己的合同。 我希望它们使用相同的端口,因此我阅读了很多关于这个主题的文章,并做了以下工作: 已启用网络tcp端口共享服务 使用以下命令注册url's: netsh http add urlacl user=domain\username url=net.tcp://+:
net.tcp://computername:7777/Service1
net.tcp://computername:7777/Service2
每个人都有自己的合同。
我希望它们使用相同的端口,因此我阅读了很多关于这个主题的文章,并做了以下工作:
netsh http add urlacl user=domain\username url=net.tcp://+:7777/Service1
netsh http add urlacl user=domain\username url=net.tcp://+:7777/Service2
PortSharingEnabled=true
Open()
方法时总是会出现此异常:
AddressAlreadyInUseException. The transport manager failed to listen on the supplied
URI using the NetTcpPortSharing service: the URI is already registered with the
service.
当我把它们放在同一个控制台应用程序中时,一切正常
我的问题是:当每个服务都托管在自己的控制台应用程序中时,如何让它工作。正如Jon_Lindeheim和您所说的,这应该很好。因此,我从头开始重新创建了所有内容,如下所示: 我有两个WCF服务,它们具有相同的基址和不同的相对URI
即 服务1:
<add baseAddress = "net.tcp://computername:7777/" />
...
<endpoint address = "/service1" ... />
<add baseAddress = "net.tcp://computername:7777/service1/" />
...
<endpoint address = "/service1" ... />
...
服务2:
<add baseAddress = "net.tcp://computername:7777/" />
...
<endpoint address = "/service2" ... />
<add baseAddress = "net.tcp://computername:7777/service2/" />
...
<endpoint address = "/service2" ... />
...
我不知道基址必须是不同的,不仅仅是最终的绝对URI
因此,以下方法很好:
服务1:
<add baseAddress = "net.tcp://computername:7777/" />
...
<endpoint address = "/service1" ... />
<add baseAddress = "net.tcp://computername:7777/service1/" />
...
<endpoint address = "/service1" ... />
...
服务2:
<add baseAddress = "net.tcp://computername:7777/" />
...
<endpoint address = "/service2" ... />
<add baseAddress = "net.tcp://computername:7777/service2/" />
...
<endpoint address = "/service2" ... />
...
(为什么第一种错误的方式在所有进程都在一个进程中时仍然有效,我认为这与端口共享以基于进程的方式路由流量的方式有关)
再次感谢我用它复制了您的所有步骤,除了“使用命令注册url:”在Windows 7、.NET 4.5中。似乎您已经完成了端口共享所需的一切。只需仔细检查以下内容:1您使用portsharingEnabled=true创建了绑定,是否在标记端点(在配置文件中)中设置了bindingConfiguration值?2使用另一个端口号尝试您的程序,以防您以前测试程序中的设置阻止了端口共享的发生。3据我所知,端口共享不需要netsh命令。@Jon_Lindeheim谢谢,至少我知道它应该可以工作。我所需要做的就是从头开始重新创造一切,希望我所犯的错误会迎刃而解。我会试着发回ASAP@yyou谢谢你花时间帮忙