默认情况下,IIS 7网站具有带有“808:”绑定信息字符串的net.tcp绑定。 如果我添加另一个带有“xxx:”的net.tcp绑定,则会出现异常:
此集合已经包含了一个方案为net.tcp的地址。 此集合中每个方案最多只能有一个地址。 参数名称:item
我该如何解决这个问题并在两个端口上监听我的服务?
基本上,在您的服务中,您应该能够定义任意数量的服务端点在任意数量的端口上。
有两种方法可以做到这一点:
如果选择选项#1,则会得到以下内容:
<service name="YourService">
<host>
<baseAddresses>
<add baseAddress="net.tcp://YourServer:5151/Services" />
</baseAddresses>
</host>
<endpoint name="endpoint1"
address="Service1"
binding="netTcpBinding"
contract="IYourService" />
<endpoint name="endpoint2"
address="Service2"
binding="netTcpBinding"
contract="IYourService" />
</service>
net.tcp://YourServer:5151/Services/Service1
并且
net.tcp://YourServer:5151/Services/Service2
您可以拥有多个服务终结点,但只能有一个基础地址。
另一种选择是不指定基础地址,并直接在终结点中指定完整的服务地址:
<service name="YourService">
<endpoint name="endpoint1"
address="net.tcp://YourServer:5151/Services/Service1"
binding="netTcpBinding"
contract="IYourService" />
<endpoint name="endpoint2"
address="net.tcp://YourServer:6868/Services/Service2"
binding="netTcpBinding"
contract="IYourService" />
</service>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix=http://MyHostHeader />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
我又来了。
这适用于自托管。
<baseAddresses>
<add baseAddress="net.tcp://localhost" />
<add baseAddress="net.tcp://localhost:12345" />
</baseAddresses>
但是在IIS7+WAS中会导致异常
无法连接到net.tcp://localhost:12345/game2.svc。 连接尝试持续了00:00:02.0936160的时间跨度。 TCP错误代码10061:由于目标计算机积极拒绝,因此无法建立连接127.0.0.1:12345。
这个问题与IIS托管环境有关