当我设置多个ServiceHost实例时,我只能为一个端口使用一台主机。缺少ServiceHost和IIS之间的链接
Uri baseAddressHttps = new Uri("https://localhost/myservice.svc");
ServiceHost host = new ServiceHost(typeof(MyService), baseAddressHttps);
...
host.Open(); //OK
ServiceHost host2 = new ServiceHost(typeof(MyService), baseAddressHttps);
...
host2.Open(); //Fail
第二次调用host2.Open()会按预期失败。
最近我偶然发现了ServiceHost的行为行为。 一台机器(Windows Server 2012 R2)运行的IIS覆盖了https://localhost。没有托管的站点,IIS基本上什么也没做。 当我安装了我的程序(一个正常的Windows服务),使用地址https://localhost/myservice.svc上的WCF ServiceHost它没有任何问题。
我没有配置IIS,也没有“告诉”ServiceHost有一个正在运行的IIS。怎么可能没有任何港口冲突? ServiceHost使用哪种黑暗魔法?只是想了解发生了什么。