我正在使用Activator.CreateInstance(type, "http://localhost/blah")
在Windows 7上使用.Net 3.5中的远程处理来调用服务。
据我了解,Windows 7默认使用IPv6(当然,如果我ping localhost它解析为:: 1),所以我希望这个URL建立IPv6连接,但在我的测试中,它总是连接作为IPv4
如何在远程处理URL中指定我要使用IPv6?
答案 0 :(得分:2)
这是因为.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。