Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

International Resource Identifier-Unterstützung in System.Uri

.NET Framework (current version)
 

Die System.Uri-Klasse wurde mit Unterstützung des (International Resource Identifier) und der IDN (Internationalized Domain Names) erweitert. Diese Erweiterungen sind in .NET Framework 3.5, in 3,0 SP1 und 2,0 SP1 verfügbar.

Webadressen werden in der Regel mithilfe der URI (Uniform Resource Identifier) ausgedrückt die einem sehr eingeschränkten Satz aus Zeichen bestehen:

  • ASCII-Groß- und Kleinbuchstaben des englischen Alphabets.

  • Ziffern von 0 bis 9.

  • Eine kleine Anzahl anderer ASCII-Symbole.

Die Spezifikationen für URIs sind in RFC 2396 und RFC 3986 dokumentiert, die von der IETF (Internet Engineering Task Force) veröffentlicht wurden.

Mit dem stetigen Anwachsen des Internets müssen Ressourcen zunehmend auch in anderen Sprachen als Englisch angegeben werden. Bezeichner, die dieser Anforderung gerecht werden und Nicht-ASCII-Zeichen (Zeichen im Unicode/ISO 10646-Zeichensatz) zulassen, sind IRIs (International Resource Identifiers). Die Spezifikationen für IRIs sind in RFC 3987 dokumentiert, die von der IETF veröffentlicht wurde. Wenn IRIs verwendet werden, kann eine URL auch Unicode-Zeichen enthalten.

Die vorhandene System.Uri-Klasse ist erweitert, um IRI-Unterstützung auf Grundlage RFC 3987 zu unterstützen. Aktuelle Benutzer werden keinen Unterschied zum .NET Framework 2.0-Verhalten feststellen, es sei denn, sie aktivieren IRI explizit. Damit wird die Anwendungskompatibilität mit früheren Versionen von .NET Framework gewährleistet.

Eine Anwendung kann angeben, ob IDN-Analysen (Internationalized Domain Name) auf Hostnamen angewendet wird und ob IRI-Analyseregeln beachtet werden sollen. Dies können Sie in der Datei machine.config oder in der Datei app.config festlegen.

Durch das Aktivieren von IDN werden alle Unicode-Bezeichnungen in einem Domänennamen in ihre Punycode-Entsprechungen konvertiert. Punycode-Namen enthalten nur ASCII-Zeichen und beginnen immer mit dem Präfix xn--. Der Grund dafür besteht in der Unterstützung vorhandener DNS-Server im Internet, da die meisten DNS-Server nur ASCII-Zeichen unterstützen (siehe RFC 3940).

Das Aktivieren von IRI und IDN wirkt sich auf den Wert der Uri.DnsSafeHost-Eigenschaft aus. Das Aktivieren von IRI und IDN kann auch das Verhalten der Methoden Uri.Equals, Uri.OriginalString, Uri.GetComponents und IsWellFormedOriginalString ändern.

Die System.GenericUriParser-Klasse wurde außerdem so erweitert, dass das Erstellen eines anpassbaren Parsers möglich ist, der IRI und IDN unterstützt. Das Verhalten eines System.GenericUriParser-Objekts wird angegeben, indem eine bitweise Kombination der in der System.GenericUriParserOptions-Enumeration verfügbaren Werte an den System.GenericUriParser-Konstruktor übergeben wird. Der GenericUriParserOptions.IriParsing-Typ gibt an, dass der Parser die in RFC 3987 für IRI (International Resource Identifiers) angegebenen Analyseregeln unterstützt. Ob IRI tatsächlich verwendet wird, hängt davon ab, wenn IRI aktiviert ist.

Der GenericUriParserOptions.Idn-Typ gibt an, dass der Parser IDN-Analysen (Internationalized Domain Name) von Hostnamen unterstützt. Ob IDN tatsächlich verwendet wird, hängt davon ab, wenn IDN aktiviert ist.

Das Aktivieren von IRI-Analysen werden Normalisierung und Zeichenüberprüfung gemäß den aktuellen IRI-Regeln in RFC 3987. Der Standardwert ist für IRI, das analysiert deaktiviert werden, und sind Normalisierung und Zeichenüberprüfung gemäß RFC 2396 und RFC 3986.

IRI und IDN konfiguriert, die in der System.Uri-Klasse verarbeiten, können mit der System.Configuration.IriParsingElement und System.Configuration.IdnElement Konfigurationseinstellungsklassen auch gesteuert werden. Die Einstellung System.Configuration.IriParsingElement aktiviert oder deaktiviert die IRI-Verarbeitung in der System.Uri-Klasse. Die Einstellung System.Configuration.IdnElement aktiviert oder deaktiviert die IDN-Verarbeitung in der Uri-Klasse. Mithilfe der Einstellung System.Configuration.IriParsingElement wird IDN auch indirekt gesteuert. Die IRI-Verarbeitung muss aktiviert sein, damit IDN-Verarbeitungsvorgänge ausgeführt werden können. Wenn die IRI-Verarbeitung deaktiviert ist, wird die IDN-Verarbeitung auf die Standardeinstellung festgelegt, in der das .NET Framework 2.0-Verhalten aus Kompatibilitätsgründen verwendet wird, und es werden keine IDN-Namen verwendet.

Die Konfigurationseinstellung für die System.Configuration.IriParsingElement und System.Configuration.IdnElement Konfigurationsklassen wird einmal gelesen, wenn die erste System.Uri-Klasse erstellt wird. Änderungen an Konfigurationseinstellungen nach diesem Zeitpunkt werden ignoriert.

Anzeigen: