Uri构造函数

时间:2012-10-04 15:05:44

标签: c#

编辑:我重新提出问题以使其更清晰

我试图了解Uri(Uri,uri)构造函数的行为:

 new Uri(new Uri("http://mydomain.com/some/path"), new Uri("/another/path"))

我得到以下结果:

 "http://mydomain.com/another/path"

但我找不到任何文件清楚地解释创作规则是什么。 换句话说,是否保证我永远不会得到以下内容?

 "http://mydomain.com/some/path/another/path"

除非我用作第二个参数:

new Uri("another/path")

3 个答案:

答案 0 :(得分:4)

您的第二个Uri "/another/path"已植根(以/开头),因此创建的Uri将包含其后的域名。

如果您的第二个Uri"another/path",则结果为"http://mydomain.com/some/path/another/path"

答案 1 :(得分:1)

你的第一个Uri必须以'/'结尾。第二个应该删除前导'/'并设置为UriKind.Relative

Uri a = new Uri("http://mydomain.com/some/path/");
Uri b = new Uri("another/path", UriKind.Relative);

Uri c = new Uri(a, b);

Console.WriteLine(c);

这将输出:

  

http://mydomain.com/some/path/another/path

答案 2 :(得分:0)

问题是第一个参数是BASE,第二个参数是BASE-RELATIVE网址。

请看第二个:它以'/'开头。这意味着第二个是ABSOLUTE,因此,只有domainname取自base,其余的是字面意思。

如果你想做亲戚,那就把它作为亲戚:

new Uri(new Uri("http://mydomain.com/some/path"), new Uri("another/path"))

请注意领先/现在缺少!