.NET Uri: неожиданный Uri, использующий конструктор для объединения путей - PullRequest
0 голосов
/ 29 января 2019

Я использую конструктор:

public Uri (Uri baseUri, stringlativeUri)

, чтобы добавить относительные пути к начальному Uri.Обычно все работает нормально, и нужный путь добавляется, но в некоторых случаях последний путь заменяется.

Например, с этим кодом:

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 голосов
/ 29 января 2019

Отсутствует последний слеш, поэтому он обрабатывает 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

Из документов :

Если baseUriимеет относительные части (например, / api), тогда относительная часть должна заканчиваться косой чертой (например, / api /), если относительная часть baseUri должна быть сохранена в созданном Uri.

...