以下是我的代码的一部分:
Uri branches = new Uri(@"https://127.0.0.1:8443/svn/CXB1/Validation/branches");
Uri testBranch = new Uri(branches, "test");
我希望testBranches
为https://127.0.0.1:8443/svn/CXB1/Validation/branches/test
,但它是https://127.0.0.1:8443/svn/CXB1/Validation/test
。我无法理解为什么Uri(Uri,string)构造函数会吃掉路径的最后一部分。
答案 0 :(得分:8)
在分支后添加斜杠
Uri branches = new Uri(@"https://127.0.0.1:8443/svn/CXB1/Validation/branches/");
Uri testBranch = new Uri(branches, "test");
答案 1 :(得分:3)
您看到的行为是正确的,因为如果您想更改文件名,替换最后一部分是个好主意。
我会在第一部分的末尾添加反斜杠。然后很明显这是一个目录,否则它可能被解释为一个文件。
Uri branches = new Uri(@"https://127.0.0.1:8443/svn/CXB1/Validation/branches/");
Uri testBranch = new Uri(branches, "test");
Console.WriteLine(testBranch);
将获得此输出:
https://127.0.0.1:8443/svn/CXB1/Validation/branches/test
答案 2 :(得分:2)
这是预期的行为。
如果在浏览器中,您的网页上的完整URI为https://127.0.0.1:8443/svn/CXB1/Validation/branches
,并且在该网页上,如果您点击了一个href为test
的链接,将被带到https://127.0.0.1:8443/svn/CXB1/Validation/test
。这是相对URI与基URI组成的方式。
另一方面,如果第一个URI以/
结尾,那么它会像您预期的那样工作。