gpt4 book ai didi

.net - 将 .Net 远程处理与 ipv6 结合使用

转载 作者:行者123 更新时间:2023-12-02 02:06:57 25 4
gpt4 key购买 nike

我正在使用 Activator.CreateInstance(type, "http://localhost/blah") 在 Windows 7 的 .Net 3.5 中使用远程调用服务。

据我所知,Windows 7 将默认使用 IPv6(当然,如果我 ping 本地主机,它解析为::1)所以我希望这个 URL 建立 IPv6 连接,但在我的测试中,它总是连接作为 IPv4

如何在远程 URL 中指定我要使用 IPv6?

最佳答案

发生这种情况是因为 .net 远程处理服务器默认监听 IPv4。如果您的网络配置为同时使用 IPv6 和 IPv4,Windows 7 将首先将主机名解析为 IPv6,然后再解析为 IPv4,这是远程服务器监听的默认地址。

因此,为了使用 IPv6 URL,您必须将远程服务器设置为也在 IPv6 上监听。如果您使用的是 app.config,请执行以下操作:

<system.runtime.remoting>
<application>
<service>
<wellknown mode="Singleton" type="MyApplication.MyServer, MyAssembly" objectUri="MyServer" />
</service>
<channels>
<channel ref="tcp" name="tcp6" port="9000" bindTo="[::]" />
<channel ref="tcp" name="tcp4" port="9000" bindTo="0.0.0.0" />
</channels>
</application>
</system.runtime.remoting>

或以编程方式配置:

IDictionary properties = new Hashtable();
properties["name"] = "tcp6";
properties["port"] = 9000;
properties["bindTo"] = "[::]";
TcpServerChannel channel = new TcpServerChannel(properties, null);
ChannelServices.RegisterChannel(channel, false);

有关详细信息,请参阅 this blog post .

关于.net - 将 .Net 远程处理与 ipv6 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14522223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com