Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 WCF:TCP.NET上的多个绑定_C# 4.0_Iis 7.5_Wcf Binding_Net.tcp - Fatal编程技术网

C# 4.0 WCF:TCP.NET上的多个绑定

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

我正在尝试在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 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上有多个绑定名称)?

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

如果有人找到了解决方案,请根据使用multipleSiteBindingsEnabled告诉WCF忽略任何
,分享…

当使用此设置启用多个站点绑定时,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协议的多站点绑定”是可能的,但您必须注意您的配置和螺母过度配置。