编辑:我重新提出问题以使其更清晰
我试图了解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")
答案 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);
这将输出:
答案 2 :(得分:0)
问题是第一个参数是BASE,第二个参数是BASE-RELATIVE网址。
请看第二个:它以'/'开头。这意味着第二个是ABSOLUTE,因此,只有domainname取自base,其余的是字面意思。
如果你想做亲戚,那就把它作为亲戚:
new Uri(new Uri("http://mydomain.com/some/path"), new Uri("another/path"))
请注意领先/现在缺少!