在同一端口上监听不同IP地址的请求,涉及到WCF和非WCF应用程序。

3

我有一个应用程序绑定在一台机器的IP1:80端口上,该机器有5个虚拟IP地址(IP1-IP5)

然后我尝试将自托管的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

是什么让你“猜测WCF正在尝试绑定整个IP范围”?难道该IP上的端口不可能只是被占用了,类似于这种情况吗? - Jeroen
我认为原因是这样的:我可以在IP5:80上运行另一个非WCF应用实例,并且它可以正常工作。然而,WCF只有在所有IP上都有空闲端口时才能启动。 - Jamona Mican
“IP5”是计算机的名称吗?如果您这样做,WCF将绑定到计算机而不是特定的IP地址... - Peter Ritchie
不,这是一个IP地址。请参见下面的解决方案。 - Jamona Mican
1个回答

2

找到了解决方案:

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

在此之后,自托管的WCF应用程序将不再尝试绑定到80端口的整个范围,仅限于IP5!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接