5

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

此集合已经包含一个带有方案 net.tcp 的地址。此集合中的每个方案最多可以有一个地址。参数名称:项目

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

4

3 回答 3

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>

所以在这种情况下,你有两个服务端点用于同一个合约,它们将监听 URL

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 端口,一个用于每个端点。这应该完全没有问题。您在两个单独的端口上有两个单独的端点,它们都在后台侦听并由同一服务类提供服务。

马克

于 2009-09-13T06:52:57.843 回答
2

前几天我试图将 WCF 服务部署到我的一个 Web 服务器,但遇到了问题。我不断收到以下错误消息:p>

这个集合已经包含一个带有 http 方案的地址。此集合中每个方案最多可以有一个地址。参数名称:项目

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

<serviceHostingEnvironment>
<baseAddressPrefixFilters>    
    <add prefix=http://MyHostHeader />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
于 2010-06-13T13:19:03.963 回答
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 托管环境

于 2009-09-14T12:11:58.633 回答