为什么我会收到'System.UriFormatException:无效的URI:指定的端口无效.' 使用IPv6 URI时?

Sha*_*awn 3 c# ftp uri ipv6

为什么这样呢 var uri = new Uri("ftp://1111:2222:3333::43/testing/1kb.zip");

抛出这个例外?

System.UriFormatException:无效的URI:指定的端口无效.在System.Uri.CreateThis(String uri,Boolean dontEscape,UriKind uriKind)

Jon*_*eet 10

来自RFC 2732:

要在URL中使用文字IPv6地址,文字地址应包含在"["和"]"字符中.

例如,这工作正常:

var uri = new Uri("ftp://[1111:2222:3333::43]/testing/1kb.zip");
Run Code Online (Sandbox Code Playgroud)

如果要指定端口,则需要在方括号外:

var uri = new Uri("ftp://[1111:2222:3333::43]:100/testing/1kb.zip");
Run Code Online (Sandbox Code Playgroud)

  • @Prera​​kK:这听起来应该是一个新问题.特别是,它与这个关于IPv6表示的问题没有任何关系*.(但简而言之:您尚未在其中指定URI方案名称.) (3认同)