Freigeben über


URI-Pfade mit nicht-ASCII-Zeichen werden auf Unix richtig analysiert

Ein Fehler in der System.Uri Klasse wurde behoben, sodass absolute URI-Pfade, die nicht-ASCII-Zeichen enthalten, jetzt richtig auf Unix-Plattformen analysiert werden.

Änderungsbeschreibung

In früheren Versionen von .NET werden absolute URI-Pfade, die Nicht-ASCII-Zeichen enthalten, auf Unix-Plattformen falsch analysiert, und Segmente des Pfads werden dupliziert. (Absolute Pfade sind diejenigen, die mit "/" beginnen.) Das Analyseproblem wurde für .NET 5 behoben. Wenn Sie von einer früheren Version von .NET zu .NET 5 oder höher wechseln, erhalten Sie unterschiedliche Werte, die von Uri.AbsoluteUri, Uri.ToString()und anderen Uri Mitgliedern erstellt werden.

Berücksichtigen Sie die Ausgabe des folgenden Codes, wenn sie auf Unix ausgeführt wird.

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

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

Ausgabe bei der vorherigen .NET-Version:

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

Ausgabe bei .NET 5 oder einer höheren Version:

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

Eingeführte Version

5.0

Wenn Sie Code haben, der die doppelten Pfadsegmente erwartet und konten, können Sie diesen Code entfernen.

Betroffene APIs