UriBuilder builder = new UriBuilder("http://somehost/somepath");

builder.Query = "somekey=" + HttpUtility.UrlEncode("some+value");

Uri someUri = builder.Uri;

 

 

Response.Write("" + someUri.AbsoluteUri + "");

Response.Write("" + someUri.ToString() + "");

 

显示的结果如下:

http://somehost/somepath?somekey=some%2bvalue

http://somehost/somepath?somekey=some+value

 

可以看出 AbsoluteUri 是经过编码的,如果访问这个网址,再取 somekey 的值,结果为“some+value”,符合原值。

而 ToString() 是取原值,如果访问这个网址,再取 somekey 的值时,结果为“some value”,与原值不符。

也就是说:如果要在浏览器中传送这个 Uri,则使用 AbsoluteUri;如果要获得未编码的 Uri,则使用 ToString()。