使用两个tcp端口上的net.tcp绑定在IIS 7(WAS)中托管WCF服务

时间:2009-09-12 21:03:44

标签: wcf iis-7 was net.tcp

默认情况下,IIS 7网站的net.tcp绑定带有“808:”绑定信息字符串。如果我添加另一个net.tcp绑定与“xxx:”异常发生:

此集合已包含方案net.tcp的地址。此集合中每个方案最多只能有一个地址。 参数名称:item

我如何解决这个问题并在两个端口监听我的服务?

3 个答案:

答案 0 :(得分:8)

基本上,在您的服务中,您应该能够在任意数量的端口上定义任意数量的服务端点。

有两种方法可以做到这一点:

  • 在服务端点
  • 中定义基地和相对地址
  • 在每个端点
  • 中定义完整地址

如果你做选项#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>

在这种情况下,由于您在端点中定义了整个地址,因此您可以选择两个不同的TCP端口,每个端点一个端口。这应该没有任何问题。在两个独立的端口上有两个独立的端点,在后台监听和由同一服务类提供服务。

马克

答案 1 :(得分:2)

前几天我试图将一个WCF服务部署到我的一个Web服务器上并遇到问题。我不断收到以下错误消息:p&gt;

此集合已包含方案http的地址。此集合中每个方案最多只能有一个地址。参数名称:item

问题没有发生在我的本地计算机上,而是在网络服务器上发生,使得弄清楚导致它的原因有点困难。它发生在服务器上,因为我的Web服务器位于共享托管环境中,在这种情况下,WCF服务还需要知道主机头。为此,我导航到web.config并添加以下内容:

<serviceHostingEnvironment>
<baseAddressPrefixFilters>    
    <add prefix=http://MyHostHeader />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>

答案 2 :(得分:0)

再来一次。

这适用于自我主持人

 <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托管环境