0

编辑:我改写问题以使其更清楚

我试图了解 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")
4

3 回答 3

4

您的第二个Uri "/another/path"是植根的(它以 开头/),因此Uri创建的将具有域后跟它。

如果你的第二个Uri"another/path",结果将是"http://mydomain.com/some/path/another/path"

于 2012-10-04T15:13:35.303 回答
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

于 2012-10-04T15:18:59.240 回答
0

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

请看第二个:它以'/'开头。这意味着第二个是绝对的,因此,只有域名是从基础中获取的,其余的都是从字面上获取的。

如果你想建立相对关系,那么让它成为相对关系:

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

请注意,现在缺少前导 / !

于 2012-10-04T15:14:31.480 回答