2012-10-26 73 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!