我正在尝试使用多个tcp.net绑定在IIS 7.5下设置一个网站。
由于服务位于负载均衡器之后,我需要为服务提供多个端点:
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'来解决问题。 参数名称:item
我还尝试将其添加到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上有多个绑定名称)?
答案 0 :(得分:1)
根据documentation使用 multipleSiteBindingsEnabled 告诉WCF忽略任何<baseAddressPrefixFilters>
。
&#34;对于HTTP和非HTTP协议,当使用此设置启用多个站点绑定时,将忽略任何baseAddressPrefixFilters设置。&#34;
因此,这个配置与自身相矛盾,您指定地址前缀并同时指示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>
希望这有助于其他人:)
答案 1 :(得分:0)
据我所知,这是不可能的:
如果有人找到解决方案,请分享......