如果我这样做:
new Uri("http://www.mydomain.com?name=i%20hate%20asp.net!").ToString()
它不会返回:
http://www.mydomain.com?name=i%20hate%20asp.net!
它返回:
http://www.mydomain.com?name=i hate asp.net!
为什么呢?如何正常工作?
答案 0 :(得分:4)
您需要使用Uri.AbsoluteUri
。 ToString()
只是基础数据的字符串表示,而不是正确的URI。
new Uri("http://www.mydomain.com?name=i%20hate%20asp.net!").AbsoluteUri
答案 1 :(得分:1)
我认为这种行为可能绝对正确,ToString() - 方法旨在显示人类可读的结果。 该方法的规范说:
(via http://msdn.microsoft.com/de-de/library/system.uri.tostring.aspx)
Return Value
Type: System.String
A String instance that contains the unescaped canonical representation of the Uri instance. All characters are unescaped except #, ?, and %.
你打算用uri的字符串表示什么?也许有了这些信息,我们可以为youtr问题提供正确的解决方案。我想你需要在一般情况下使用yourUri.AbsoluteUri而不是yourUri.ToString()。