15
var baseUri = new Uri("http://localhost/");
var uri1 = new Uri(baseUri, "1");
var uri2 = new Uri(uri1, "2");   

没想到uri2http://localhost/2。我将如何附加到uri1http ://localhost/1/2 intead?这样做Uri,还是我需要回退到字符串?顺便说一句,我几乎在任何地方都尝试添加前导/尾随斜杠。

4

1 回答 1

18

“1”和“2”是 url 的“文件名部分”。如果你让“1”看起来更像目录路径,它会正常工作“1/”:

var baseUri = new Uri("http://localhost/");
var uri1 = new Uri(baseUri, "1/");
var uri2 = new Uri(uri1, "2"); 

注意:“文件名部分”不是真正的术语,因为 Url 只有“路径”和“查询”组件,但通常将路径的最后一块视为文件名:“/foo/bar/file.txt”。

当您组合 2 条路径时,您想用第二条路径替换第一条路径的某些尾部。在你的情况下,它最终只有“文件名”段:“/1”和“2”(如果你把真正的价值像“/myFile.txt”和“NewFile.txt”结合起来会更容易看看它为什么会这样)。

于 2012-04-13T21:35:07.847 回答