4

我正在尝试在 IIS 7.5 下建立一个具有多个 tcp.net 绑定的网站。

由于该服务位于负载均衡器后面,因此我需要该服务的多个端点:

log.o1881.no/log/service.svc

log.core1.o1881.no/log/service.svc

当我在 web.config 中配置时,这适用于 http 绑定:

<system.serviceModel>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>

将以下 tcp.net 绑定添加到站点时会出现以下错误消息:

808:log.o1881.no

808:log.core1.o1881.no

“/Log”应用程序中的服务器错误。

此集合已经包含一个带有方案 net.tcp 的地址。此集合中的每个方案最多可以有一个地址。如果您的服务托管在 IIS 中,您可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true 或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来解决问题。参数名称:项目

我还尝试将其添加到 web.config:

<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
  <baseAddressPrefixFilters>
    <add prefix="net.tcp://log.o1881.no:808/log" />
    <add prefix="net.tcp://log.core1.o1881.no:808/log" />
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>

然而,这不起作用。

由于该服务将部署在多台服务器上,我非常希望能够通过配置和 IIS 设置来完成这项工作,而不是在代码中。

是否可以这样做,或者是否有另一种方法来处理这种情况(由于负载平衡,http 和 net.tcp 上有多个绑定名称)?

4

2 回答 2

1

根据文档,使用multipleSiteBindingsEnabled告诉 WCF 忽略任何<baseAddressPrefixFilters>.

“当使用此设置启用多个站点绑定时,对于 HTTP 和非 HTTP 协议,任何 baseAddressPrefixFilters 设置都会被忽略。”

因此,此配置自相矛盾,您正在指定地址前缀并同时指示 WCF 忽略它们,因为您指定了multipleSiteBindingsEnabled

<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
  <baseAddressPrefixFilters>
    <add prefix="net.tcp://log.o1881.no:808/log" />
    <add prefix="net.tcp://log.core1.o1881.no:808/log" />
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>

我认为multipleSiteBindingsEnabled最适合您只对使用 HTTP 方案感兴趣的场景。

否则不要使用它,实际上您可以在同一 IIS 站点/应用程序层次结构中的不同端口上拥有多个 tcp.net 绑定

<serviceHostingEnvironment>
  <baseAddressPrefixFilters>
    <add prefix="net.tcp://log.o1881.no:808/log" />
    <add prefix="net.tcp://log.core1.o1881.no:808/log" />
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>

希望这对其他人有帮助:)

于 2013-03-28T17:17:11.870 回答
0

据我所知,这是不可能的:

如果有人找到解决方案,请分享...

于 2012-02-21T10:30:43.950 回答