C# 4.0 WCF:TCP.NET上的多个绑定
我正在尝试在IIS 7.5下建立一个具有多个tcp.net绑定的网站 由于该服务位于loadbalancer之后,因此我需要该服务的多个端点: log.o1881.no/log/service.svc log.core1.o1881.no/log/service.svc 当我在web.config中配置时,这适用于http绑定:C# 4.0 WCF:TCP.NET上的多个绑定,c#-4.0,iis-7.5,wcf-binding,net.tcp,C# 4.0,Iis 7.5,Wcf Binding,Net.tcp,我正在尝试在IIS 7.5下建立一个具有多个tcp.net绑定的网站 由于该服务位于loadbalancer之后,因此我需要该服务的多个端点: log.o1881.no/log/service.svc log.core1.o1881.no/log/service.svc 当我在web.config中配置时,这适用于http绑定: <system.serviceModel> <serviceHostingEnvironment multipleSiteBindingsEnab
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<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>
将以下tcp.net绑定添加到站点时,将显示以下错误消息:
808:log.o1881.no
808:log.core1.o1881.no
“/Log”应用程序中出现服务器错误
此集合已包含scheme net.tcp的地址。此集合中每个方案最多只能有一个地址。如果您的服务托管在IIS中,则可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为true或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来修复此问题。
参数名称:item
我还尝试将其添加到web.config:
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<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上有多个绑定名称)?因为据我所知,这是不可能的:
,分享…
当使用此设置启用多个站点绑定时,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>
希望这对其他人有帮助:)我已经尝试了一天多,但没有成功。确实有很多关于如何使用http的讨论,但对于net.tcp却没有。我开始怀疑这是不可能的。美国联邦法规。这篇文章“只支持Http协议的多站点绑定”是可能的,但您必须注意您的配置和螺母过度配置。