0

我阅读了所有关于启用端口共享的 msdn:应该启动端口共享服务,并且我的 net.tcp 绑定应该指定“portSharingEnabled = True”。

我还看到 net.tcp 绑定文档将端口共享的默认值显示为 false。

但是在我的 VS 2013 WIN 7 机器中,我有一个托管许多服务的控制台应用程序,我可以从 VS 运行它而没有任何问题。我的 servichost 能够使用相同的端口托管 10 多个服务。我想了解什么?有任何想法吗 ?

我对所有服务使用此端点,后跟 servicename:

   <service name="Lookup" behaviorConfiguration="">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8000/"/>
          </baseAddresses>
        </host>
        <endpoint 
                        name="IEntitiesLookup"
                        binding="netTcpBinding"
                        address="LookupService"
                        contract="ILookup" />
      </service>
4

1 回答 1

2

我设法在一定程度上澄清了我对端口共享的理解。但会很高兴对此有更多的想法。

我设法找到了上述情况背后的原因。在一个进程中,我可以托管多个共享同一端口的端点。这不需要启用端口共享。但是,如果我有另一个进程尝试托管具有相同端口号的某些服务,则会发生“端口已在使用”的异常。在这种情况下,我们需要在两个服务主机进程中的所有端点的绑定中启用端口共享,并启动 PortSharing 服务。

我相信这归结为理解在传输层中,端口号与进程相关联。

于 2014-03-21T13:46:51.063 回答