【问题标题】:.NET Uri: unexpected Uri using constructor to combine paths.NET Uri:使用构造函数组合路径的意外 Uri
【发布时间】:2019-01-29 11:50:33
【问题描述】:

我正在使用构造函数:

public Uri(Uri baseUri, string relativeUri)

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

例如,使用以下代码:

新 Uri(新 Uri(“http://localhost:3000/app/api/publicapi/NAS_0x5d65d971895edc438f465c17db6992698a52318d”),“块”)

我期待这个结果:

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

但我明白了:

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

这里怎么了?

【问题讨论】:

    标签: c# .net uri


    【解决方案1】:

    缺少最后的斜线,因此它将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 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 2013-04-02
      相关资源
      最近更新 更多