3

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

Throw this exception?

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

user247702
  • 21,902
  • 13
  • 103
  • 146
Shawn
  • 2,216
  • 4
  • 44
  • 77

1 Answers1

10

From RFC 2732:

To use a literal IPv6 address in a URL, the literal address should be enclosed in "[" and "]" characters.

For example, this works fine:

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

If you want to specify the port, it needs to be outside the square brackets:

var uri = new Uri("ftp://[1111:2222:3333::43]:100/testing/1kb.zip");
Jon Skeet
  • 1,261,211
  • 792
  • 8,724
  • 8,929
  • Jon, i read this http://stackoverflow.com/a/1984225/22656 and am confused why following is wrong new Uri("Prerak/Kaushik/SomeResource"); Thanks. – Prerak K Feb 11 '14 at 11:26
  • 3
    @PrerakK: This sounds like it should be a new question. In particular, it has *nothing* to do with this question about IPv6 representations. (But in brief: you haven't specified a URI scheme name in there.) – Jon Skeet Feb 11 '14 at 11:27