Net 名前付きパイプ バインドを使用するように構成された WCF サービスがあります。サービスの構成はこちら。
<service name="XX.Impl.Configuration.ConfigurationService" behaviorConfiguration="DefaultServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="net.pipe://localhost/xx/ConfigurationService" />
</baseAddresses>
</host>
<endpoint name="pipeEndPoint" address="" binding="netNamedPipeBinding" behaviorConfiguration="NoDataContextBehavior" bindingConfiguration="pipeBindingConfiguration" contract="ServiceContracts.IConfigurationService" />
<endpoint name="pipeEndPointMex" address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange">
</endpoint>
</service>
Windows サービスの一部としてサービスを開始しようとしましたが、サービスは正常に開始されました。これを実行している同じマシンで、コンソール アプリケーションの一部として同じサービス、同じ構成、同じアドレスを開始しました。それも正常に実行されます。唯一の違いは、Windows サービスが Network Service ID で実行され、コンソール アプリが私の ID で実行されることです。
Windows サービスのサービスがリッスンしているときに、コンソール アプリのサービスがどのように開始されるのか理解できません。「 there is another endpoint listen 」というメッセージでエラーをスローするコンソール アプリの別のインスタンスを実行しようとしました。これは理にかなっています.Windowsサービスがすでに同じサービスを開始してリッスンしている間に、コンソールアプリの最初のインスタンスがどのように実行されているか理解できません. 誰かがこれを説明できますか?