Changes to the System.Uri namespace in version 2.0

Several changes were made to the System.Uri class. These changes fixed incorrect behavior, enhanced usability, and enhanced security.

Obsolete and deprecated Members


  • All constructors that have a dontEscape parameter.



  • For URI schemes that are known to not have a query part (file, ftp, and others), the '?' character is always escaped and is not considered the beginning of a Query part.

  • For implicit file URIs (of the form c:\directory\file@name.txt), the fragment character ('#') is always escaped unless full unescaping is requested or LocalPath is true.

  • UNC hostname support was removed; the IDN specification for representing international hostnames was adopted.

  • LocalPath always returns a completely unescaped string.

  • ToString does not unescape an escaped '%', '?', or '#' character.

  • Equals now includes the Query part in the equality check.

  • Operators "==" and "!=" are overridden and linked to the Equals method.

  • IsLoopback now produces consistent results.

  • The URI "file:///path" is no longer translated into file://path.

  • "#" is now recognized as a host name terminator. That is, is now converted to

  • A bug when combining a base URI with a fragment has been fixed.

  • A bug in HostNameType is fixed.

  • A bug in NNTP parsing is fixed.

  • A URI of the form now throws a parsing exception.

  • The Framework correctly handles userinfo in a URI.

  • URI path compression is fixed so that a broken URI cannot traverse the file system above the root.

See also