6

这是我的代码的一部分:

Uri branches = new Uri(@"https://127.0.0.1:8443/svn/CXB1/Validation/branches");
Uri testBranch = new Uri(branches, "test");

我预计testBrancheshttps://127.0.0.1:8443/svn/CXB1/Validation/branches/test,但确实如此https://127.0.0.1:8443/svn/CXB1/Validation/test。我不明白为什么 Uri(Uri, string) 构造函数会吃掉路径的最后一部分。

4

3 回答 3

8

在分支后添加斜线

  Uri branches = new Uri(@"https://127.0.0.1:8443/svn/CXB1/Validation/branches/");
  Uri testBranch = new Uri(branches, "test");
于 2013-08-22T07:49:14.843 回答
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
于 2013-08-22T07:57:45.157 回答
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 以 a 结尾,/那么它会像您预期的那样工作。

于 2013-08-22T07:52:02.893 回答