2012-10-26 67 views
3

我有一个应用程序在端口IP1结合:用5个虚拟IP地址(IP1-IP5)听力同一端口,不同的IP地址,WCF +非WCF应用上

然后我试图绑定的机器的80一个自托管的WCF服务到IP5:80,但得到一个AlreadyInUseException。我想WCF试图绑定到整个IP范围,尽管我指定了一个特定的事实。

这是已知的行为吗?

  [start application that binds to IP1:80] 


      string baseAddress = "http://IP5:80/binary"; 

      ServiceHost host = new ServiceHost(typeof(BinaryService), 
               new Uri(baseAddress)); 


      host.AddServiceEndpoint(typeof(IBinaryService), GetBinding(), "") 
            .Behaviors.Add(new WebHttpBehavior()); 

      host.Open(); // exception 
+0

是什么让你“猜测WCF试图绑定整个IP范围”?该IP上的端口不能被使用,类似于[这种情况](http://stackoverflow.com/a/2399920/419956)? – Jeroen

+0

我认为这个的原因:我可以在IP5上运行非wcf应用程序的另一个实例:80,它工作得很好。另一方面,WCF只有在所有IP上的端口都空闲时才会启动。 –

+0

“IP5”是电脑的*名称*吗? WCF将绑定到计算机,而不是一个特定的IP地址,如果你这样做... –

回答

2

找到了解决办法:

Run netsh 
Type http 
Type add iplisten ipaddress=IP5:80 

在此之后,自托管WCF的应用程序不会尝试绑定到全系列80,只是IP5!