.NET Uri:意外的Uri使用构造函数合并路径

时间:2019-01-29 11:50:33

标签: c# .net uri

我正在使用构造函数:

公共Uri(Uri baseUri,字符串relativeUri)

将相对路径附加到初始Uri。 通常,一切正常,并添加了所需的路径,但是在某些情况下,最终路径为REPLACED。

例如,使用以下代码:

new Uri(new Uri("http://localhost:3000/app/api/publicapi/NAS_0x5d65d971895edc438f465c17db6992698a52318d"), "Blocks")

我希望得到这个结果:

http://localhost:3000/app/api/publicapi/NAS_0x5d65d971895edc438f465c17db6992698a52318d/Blocks

但是我得到了

http://192.168.26.50:3000/app/api/publicapi/Blocks

这是怎么了?

1 个答案:

答案 0 :(得分:2)

缺少最后的斜杠,因此将NAS_0x5d65d971895edc438f465c17db6992698a52318d视为资源而不是路径:

var existingUri =
    new Uri("http://localhost:3000/app/api/publicapi/NAS_0x5d65d971895edc438f465c17db6992698a52318d/");

new Uri(existingUri, "Blocks");
// returns: http://localhost:3000/app/api/publicapi/NAS_0x5d65d971895edc438f465c17db6992698a52318d/Blocks

来自docs

  

如果baseUri具有相对部分(如/ api),则相对部分   如果的相对部分必须以斜杠(例如/ api /)结尾   baseUri将保留在构造的Uri中。