为什么 URI 构造函数从 baseUri 参数中删除部分路径?

Jun*_*r M 3 c# uri

public class Program
{
    public static void Main()
    {
        Uri baseUri = new Uri("http://localhost:7777/BasePath/");
        Uri uri = new Uri(baseUri, "/controller");
        Console.WriteLine(uri);
    }
}
Run Code Online (Sandbox Code Playgroud)

从 uri 中擦除 /BasePath 是有意的行为吗?最终结果是什么http://localhost:7777/controller

Sco*_*nen 6

我必须深入研究您正在调用的构造函数的文档

public Uri (Uri baseUri, string relativeUri);

此外,如果relativeUri以斜杠开头,那么它将替换 的任何相关部分baseUri

这是预期的行为。如果指定以斜杠开头的相对路径,则假定相对路径是整个相对路径,因此它会丢弃 中已包含的任何相对路径baseUri

  • 在文档中,它说如果要保留路径,则 baseUri 必须以尾部斜杠结尾。 (2认同)