你如何在ipv4和ipv6上监听.net服务

时间:2013-11-26 03:53:48

标签: c# .net wcf wcf-binding

我看了很多堆栈溢出和谷歌,但没有找到任何讨论.net服务和IP堆栈选择的神秘配置。

基本上,我将服务配置为

  <service behaviorConfiguration="MyServiceBehavior"
    name="MyCompany.Service.MyService">
    <endpoint address="MyService" behaviorConfiguration="EndPBehavior" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Default" contract="MyCompany.Service.IMyService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:15030" />
        <add baseAddress="net.tcp://localhost:15035" />
      </baseAddresses>
    </host>
  </service>

我的问题是在使用netstat -nab

我看到了

 TCP [::]:15030
Can not obtain ownership information

  TCP 0.0.0.0:15035
[TestHost.exe]

因此,其中一个端点通过ipv4绑定,一个端点使用ipv6绑定。

ipv4当然不会响应ipv6请求,ipv6绑定一个会忽略ipv4请求。

那么,我怎样才能使服务绑定,以便监听所有ipv4和ipv6地址?

当前不一致的行为在Windows 7计算机上给出了许多问题。本地流量趋于使用ipv6地址,而使用中的路由器只能理解ipv4,因此非本地流量使用ipv4。

我可能忽略了解释如何支持ipv4和ipv6的网站的任何链接,我们将不胜感激。对配置片段进行任何魔术更改,以便服务支持ipv6和ipv4也将非常感激。

0 个答案:

没有答案