【发布时间】:2013-01-13 08:29:03
【问题描述】:
我正在使用 .NET 3.5。
here 描述的两种解决方案(配置文件中的属性"genericUriParserOptions" 和构造函数参数"dontEscape")都不适用于 .NET 3.5。
我希望URI 构造函数不会逃逸(意味着我想逃逸URL 部分)任何东西。现在我不能使用配置文件了
genericUriParserOptions="DontUnescapePathDotsAndSlashes"
因为此属性仅适用于 .NET 4.0。但我也不能在URI 构造函数中使用"dontEscape" 参数,因为构造函数在.NET 3.5 中已过时并且始终为false。
如何在 .NET 3.5 中创建带有转义字符串的 URI?
【问题讨论】:
-
Uri.OriginalString属性对您有帮助吗?基本上,让构造函数做它该做的事,但是你使用你传递给构造函数的原始值。 -
嗨,吉姆,感谢您的建议。我需要 URI 才能在 C# 中创建 http Web 请求:(HttpWebRequest)WebRequest.Create(myUri)。这就是为什么我不能使用建议的 Uri.OriginalString。我必须找到使用转义字符串创建请求的方法。
-
有一个重载,
WebRequest.Create(string url),它接受一个 URL 字符串。它可能只是创建一个Uri,然后调用WebRequest.Create(Uri),但值得一试。 -
嗨,吉姆,是的,WebRequest 也会从字符串创建 URI。它具有相同的效果:字符串将被转义。问题在于无法逃避。它是在 URI 中而不是在 WebRequest 中完成的,这就是我询问 URI 的原因。
-
你试过Uri uri = new Uri(Uri.EscapeUriString(url))吗?