如何阻止System.Uri取消编码URL?

Cle*_*ggy 6 .net c#

如何阻止System.Uri类取消编码传递给其构造函数的编码URL?请考虑以下代码: -

Uri uri = new Uri("http://foo.bar/foo%2FBar");
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", false);
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", true);
Console.WriteLine(uri.AbsoluteUri);
Run Code Online (Sandbox Code Playgroud)

在每种情况下,输出都是"http://foo.bar/foo/bar".如何确保在实例化Uri实例后,Uri.AbsoluteUri将返回"http://foo.bar/foo%2FBar"?

Pin*_*nyM 4

Uri尽管您可以使用该类来检索用于初始化的字符串,但该类不用于生成转义的 URI uri.OriginalString。如果您需要安全地重新编码 URI,您可能应该使用 UrlEncode。

另外,根据http://msdn.microsoft.com/en-us/library/9zh9wcb3.aspxdontEscape已被弃用,并且始终为 false。

更新:

似乎有人找到了一种方法(黑客)来做到这一点 - GETting a URL with an url-encoded斜杠