1

我有一个配置为使用网络命名管道绑定的 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 服务以网络服务身份运行,而控制台应用程序以我的身份运行。

我无法理解 Windows 服务中的服务正在侦听时控制台应用程序中的服务是如何启动的。我试图运行另一个控制台应用程序实例,该实例抛出错误消息“有另一个端点正在侦听”。这是有道理的,我无法理解控制台应用程序的第一个实例是如何运行的,而 Windows 服务已经启动了相同的服务并正在侦听。有人可以解释一下吗?

4

0 回答 0