我想知道它如何将这些基地址与端点相关联。
根据协议。
当您定义服务端点时,您可以为端点提供相对或绝对地址,如果您提供绝对端点地址,则基地址将不会用于生成实际端点地址,但是如果您在端点中提供相对地址,那么您的基地址和相对地址的组合将用于生成最终端点地址。
例如,相对端点地址如下所示:
<endpoint address="/hostHttp" binding="wsHttpBinding" contract="IMyService" />
<endpoint address="/hostNetTcp" binding="netTcpBinding" contract="IMyService" />
现在 WCF 将使用您为每个协议定义的基地址生成实际的端点地址:
<baseAddresses>
<add baseAddress="http://localhost:8550/MyServiceHost/Service"/>
<add baseAddress="net.tcp://localhost:8551/MyServiceHost/Service"/>
</baseAddresses>
因此,您的 HTTP 端点地址最终将是:
http://localhost:8550/MyServiceHost/Service/hostHttp
和你的 netTcp 端点:
net.tcp://localhost:8551/MyServiceHost/Service/hostNetTcp
现在,如果您定义了另一个协议,并且尚未在端点中定义绝对地址,WCF 将查找为该特定协议定义的基地址,并使用基地址生成端点。
如果 WCF 使用带有 netTcpBinding 端点的 net.tcp 基地址,那么如果您有两个侦听 9000 和 9001 的 tcp 端点会发生什么情况,您会在配置中添加什么来阻止冲突?
我认为在这种情况下最好在 ypour 端点中给出绝对地址:
<endpoint address="net.tcp://localhost:9000/MyServiceHost/Service"
binding="netTcpBinding"
contract="IMyService" />
<endpoint address="net.tcp://localhost:9001/MyServiceHost/Service"
binding="netTcpBinding"
contract="IMyService" />
如前所述,当您提供绝对地址时,在生成端点地址时不会参考您的基地址。
你可能想看看这个。