我有一个简单的 HttpClient,它在使用 ipv4/fqdb/主机名时可以完美运行(请参阅下面的代码片段)。但是,当我尝试使用 ipv6 地址连接到服务器时,相同的代码不起作用。我可能需要更改一些配置设置并能够使用 ipv6 地址定义 uri。
我看过msdn,它有以下声明:
如果主机名是 IPv6 地址,则使用规范的 IPv6 地址。ScopeId 和其他可选的 IPv6 数据被删除 - http://msdn.microsoft.com/en-us/library/system.uri.aspx
不知道是什么意思,会试着弄明白。
我可以尝试解决什么问题?
看起来我需要将 ipv6 地址保留在方括号中 [将其括起来 '[]'] http://[fe08::83e7:71e8:1364:0dff%19]:58703/并且看起来现在一切正常。感谢如何在 uri 中包含带(或不带)区域索引的 ipv6 地址以进行 .net 远程处理?
代码:
this.Client = new HttpClient();
**//below line throws UriFormatException (Invalid URI: Invalid port specified)**
this.Client.BaseAddress = new Uri(http://fe08::83e7:71e8:1364:0dff%19:58703/);
this.Client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/xml"));
//whereas below code works, when ipv4/fqdn is used...
this.Client = new HttpClient();
this.Client.BaseAddress = new Uri(10.0.0.1:58501);
this.Client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/xml"));