Поделиться через


В UNIX правильно анализируются пути URI с символами, отличными от ASCII

В классе System.Uri была исправлена ошибка таким образом, что абсолютные пути URI, которые содержат символы, отличные от ASCII, теперь правильно анализируются на платформах UNIX.

Описание изменения

В предыдущих версиях .NET абсолютные пути URI, содержащие символы, отличные от ASCII, анализировались неправильно на платформах UNIX, а сегменты пути дублировались. (Абсолютные пути начинаются с символа косой черты "/".) Проблема синтаксического анализа исправлена для .NET 5. При переходе с предыдущей версии .NET на .NET 5 и более поздние версии вы получите различные значения, создаваемые Uri.AbsoluteUri, Uri.ToString() и другими членами Uri.

Рассмотрим выходные данные следующего кода при выполнении в UNIX.

var myUri = new Uri("/üri");

Console.WriteLine($"AbsoluteUri: {myUri.AbsoluteUri}");
Console.WriteLine($"ToString: {myUri.ToString()}");

Выходные данные в предыдущей версии .NET:

AbsoluteUri: /%C3%BCri/%C3%BCri
ToString: /üri/üri

Выходные данные в .NET 5 и более поздних версиях:

AbsoluteUri: /%C3%BCri
ToString: /üri

Представленные версии

5,0

Если у вас есть код, который ожидает и учитывает повторяющиеся сегменты пути, то можно удалить этот код.

Затронутые API