複数のServiceHostインスタンスを設定すると、1つのポートに対して1つのホストしか使用できません。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()への2回目の呼び出しは、期待どおりに失敗します。
最近、私はServiceHostの偶然の行動を見つけました。 マシン(Windows Server 2012 R2)は、https://localhostをカバーするIISを実行していました。ホストされているサイトはなく、IISは基本的に何もしませんでした。 アドレスhttps://localhost/myservice.svcでWCF ServiceHostを使用するプログラム(通常のWindowsサービス)をインストールしても問題なく動作しました。
私はIISを構成していないし、実行中のIISがあることをServiceHostに通知しなかった。ポートの競合が起こっていない可能性はありますか? ServiceHostはどのダークマジックを使用していますか?何が起こっているのか理解したいだけです。