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()。