当我使用IPv6 URI时,为什么会出现“System.UriFormatException:无效的URI:指定了无效端口。”?

3
为什么这个 var uri = new Uri("ftp://1111:2222:3333::43/testing/1kb.zip"); 会抛出以下异常?

System.UriFormatException: Invalid URI: Invalid port specified. at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)


原因是端口号无效。
1个回答

10

来自RFC 2732

要在URL中使用字面IPv6地址,应该将该字面地址用“[”和“]”字符括起来。

例如,下面这个可以正常工作:

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

如果你想指定端口,它需要放在方括号外面:

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

Jon,我读了这篇文章https://dev59.com/a3VC5IYBdhLWcg3w0EoD#1984225,但是我不明白为什么以下代码是错误的:new Uri("Prerak/Kaushik/SomeResource"); 谢谢。 - Prerak K
3
这听起来应该是一个新问题。特别是,它与关于IPv6表示的这个问题毫无关系。(但简单来说:你没有在里面指定URI方案名称。) - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接