Share via


Caminhos de URI com caracteres não ASCII são analisados corretamente no UNIX

Um bug foi corrigido na classe System.Uri para que os caminhos de URI absolutos que contêm caracteres não ASCII agora sejam analisados corretamente em plataformas UNIX.

Descrição das alterações

Nas versões anteriores do .NET, os caminhos de URI absolutos que continham caracteres não ASCII eram analisados incorretamente em plataformas UNIX e segmentos do caminho eram duplicados. (Caminhos absolutos são aqueles que começam com "/"). O problema de análise foi corrigido no .NET 5. Se você mudar de uma versão anterior do .NET para o .NET 5 ou posterior, obterá valores diferentes produzidos por Uri.AbsoluteUri, Uri.ToString() e outros membros de Uri.

Considere a saída do código a seguir para execuções no UNIX.

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

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

Saída na versão anterior do .NET:

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

Saída no .NET 5 ou em versões posteriores:

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

Versão introduzida

5,0

Se você tiver um código que espere e considere os segmentos de caminho duplicados, remova esse código.

APIs afetadas