在.NET 3.5中使用URI类时保持url编码

use*_*364 5 .net c# uri

我使用的是.NET 3.5.

这里描述的两个解决方案("genericUriParserOptions"配置文件和构造函数参数中的属性"dontEscape")不适用于.NET 3.5.

我希望URI构造函数不会逃避(意味着我想要转义URL部分)任何东西.现在我无法使用配置文件

genericUriParserOptions="DontUnescapePathDotsAndSlashes"
Run Code Online (Sandbox Code Playgroud)

因为此属性仅适用于.NET 4.0.但是我不能"dontEscape"URI构造函数中使用参数,因为构造函数在.NET 3.5中已经过时并且总是如此false.

如何URI在.NET 3.5中创建带有转义的字符串?

小智 1

您应该仅对用户名或 URL 中可能无效的其他部分进行编码。对 URL 进行 URL 编码可能会导致问题,因为如下所示

string url = HttpUtility.UrlEncode("http://www.google.com/search?q=Example");
Run Code Online (Sandbox Code Playgroud)

会产生

http%3a%2f%2fwww.google.com%2fsearch%3fq%3dExample
Run Code Online (Sandbox Code Playgroud)

这显然不会奏效。相反,您应该仅对查询字符串中的键/值对的值进行编码,如下所示:

string url = "http://www.google.com/search?q=" + HttpUtility.UrlEncode("Example");
Run Code Online (Sandbox Code Playgroud)

谢谢。