【发布时间】:2017-07-18 01:30:38
【问题描述】:
当我设置多个 ServiceHost 实例时,我只能将一个主机用于一个端口。
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) 正在运行覆盖https://localhost 的 IIS。没有托管站点,IIS 基本上什么也没做。 当我在地址 https://localhost/myservice.svc 上安装使用 WCF ServiceHost 的程序(普通 Windows 服务)时,它可以正常工作。
我既没有配置 IIS,也没有“告诉”ServiceHost 有一个正在运行的 IIS。怎么可能没有任何端口冲突? ServiceHost 使用哪种黑魔法?只是想了解发生了什么。
【问题讨论】: