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

时间:2013-01-29 17:19:00

标签: c# .net uri

我使用的是.NET 3.5。

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

我希望URI构造函数不会转义(意味着我希望转义URL部分)。现在我无法使用配置文件

genericUriParserOptions="DontUnescapePathDotsAndSlashes"

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

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

1 个答案:

答案 0 :(得分:1)

您应该只编码可能无效的用户名或URL的其他部分。编码URL的URL可能导致问题,因为类似

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

将产生

http%3a%2f%2fwww.google.com%2fsearch%3fq%3dExample

这显然不会很好。相反,您应该只编码查询字符串中键/值对的值,如下所示:

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

感谢。