3

ipv4/fqdb/host 名を使用する場合に完全に機能する単純な HttpClient があります (コード スニペットについては以下を参照してください)。ただし、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/にする必要があるようで、すべてが正常に機能しているようです。.netリモーティングの uri にゾーン インデックスを含む (または含まない) ipv6 アドレスを含めるにはどうすればよいですか?

コード:

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"));
4

1 に答える 1