由于服务是在负载均衡器后面,我需要多个服务端点:
log.o1881.no/log/service.svc
log.core1.o1881.no/log/service.svc
这在我在web.config中配置时适用于http绑定:
<system.serviceModel> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel>
808:log.o1881.no
808:log.core1.o1881.no
‘/ Log’应用程序中的服务器错误.
此集合已包含方案net.tcp的地址.此集合中每个方案最多只能有一个地址.如果您的服务是在IIS中托管的,则可以通过将’system.serviceModel / serviceHostingEnvironment / multipleSiteBindingsEnabled’设置为true或指定’system.serviceModel / serviceHostingEnvironment / baseAddressprefixFilters’来解决问题.
参数名称:item
<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和非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>
我认为multipSiteBindingsEnabled最适合您只对使用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>
希望这有助于其他人:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。