我看了很多堆栈溢出和谷歌,但没有找到任何讨论.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也将非常感激。