Uri(Uri,String)构造函数不能正常工作?

时间:2013-08-22 07:47:54

标签: c# .net

以下是我的代码的一部分:

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)构造函数会吃掉路径的最后一部分。

3 个答案:

答案 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以/结尾,那么它会像您预期的那样工作。