Uri-Klasse

Stellt eine Objektdarstellung eines URIs (Uniform Resource Identifier) und einfachen Zugriff auf die Teile des URIs bereit.

Namespace: System
Assembly: System (in system.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public Class Uri
    Implements ISerializable
'Usage
Dim instance As Uri
[SerializableAttribute] 
public class Uri : ISerializable
[SerializableAttribute] 
public ref class Uri : ISerializable
/** @attribute SerializableAttribute() */ 
public class Uri implements ISerializable
SerializableAttribute 
public class Uri implements ISerializable

Hinweise

Ein URI ist eine kompakte Darstellung einer Ressource, die einer Anwendung im Intranet oder im Internet zur Verfügung steht. Die Uri-Klasse definiert die Eigenschaften und Methoden zur Behandlung von URIs. Dazu gehören Analysieren, Vergleichen und Verbinden. Die Eigenschaften der Uri-Klasse sind schreibgeschützt. Ein Objekt, das geändert werden kann, erstellen Sie mithilfe der UriBuilder-Klasse.

Relative URIs (z. B. "/new/index.htm") müssen in Bezug auf ein Basis-URI erweitert werden, damit sie absolut werden. Die MakeRelative-Methode steht zur Verfügung, um bei Bedarf absolute URIs in relative URIs zu konvertieren.

Die Uri-Konstruktoren versehen eine URI-Zeichenfolge nicht mit Escapezeichen, wenn die Zeichenfolge des URIs einschließlich Schemabezeichner formal korrekt ist.

Die Uri-Eigenschaften geben eine kanonische Darstellung der Daten mit Escapecodierung zurück, wobei alle Zeichen mit Unicode-Werten über 127 durch ihre hexadezimale Entsprechung ersetzt werden. Zum Überführen eines URIs in kanonische Form führt der Uri-Konstruktor folgende Schritte durch:

  • Das URI-Schema wird in Kleinbuchstaben konvertiert.

  • Konvertiert den Hostnamen in Kleinschreibung.

  • Wenn der Hostname eine IPv6-Adresse ist, wird die kanonische IPv6-Adresse verwendet. ScopeID und andere optionale IPv6-Daten werden entfernt.

  • Standardanschlussnummern und leere Anschlussnummern werden entfernt.

  • Kanonisiert den Pfad für hierarchische URIs, indem Sequenzen wie /./, /../, //, einschließlich mit Escapezeichen versehener Darstellungen, komprimiert werden.

  • Wenn der Host für hierarchische URIs nicht mit einem Schrägstrich (/) endet, wird dieser hinzugefügt.

  • Alle reservierte Zeichen im URI werden in Übereinstimmung mit RFC 2396 mit Escapezeichen versehen.

Der Inhalt der Uri-Klasse kann mit der ToString-Methode von einem Verweis auf einen mit Escapezeichen codierten URI in einen Verweis auf einen lesbaren URI umgewandelt werden. Beachten Sie, dass einige reservierte Zeichen in der Ausgabe der ToString-Methode immer noch mit Escapezeichen versehen sein können. Auf diese Weise wird die unmissverständliche Rekonstruktion eines URIs des Werts unterstützt, der von ToString zurückgegeben wird.

Einige URIs schließen einen Fragmentbezeichner oder eine Abfrage oder beides ein. Bei einem Fragmentbezeichner handelt es sich um Text, der einem Nummernzeichen (#) folgt, ohne das Nummernzeichen einzuschließen. Der Fragmenttext wird in der Fragment-Eigenschaft gespeichert. Bei Abfrageinformationen handelt es sich um Text, der im URI auf ein Fragezeichen (?) folgt. Der Abfragetext wird in der Query-Eigenschaft gespeichert.

In .NET Framework, Version 1.1, fügt die Uri-Klasse nach dem Doppelpunkt "//" ein, wenn die für einen Konstruktor angegebene Zeichenfolge ein unbekanntes Schema und "c:\" enthält. Zum Beispiel wird der URI xyz:c:\abc in xyz://c:/abc konvertiert. In .NET Framework, Version 2.0, wurde dieses Verhalten entfernt, und die Beispielzeichenfolge wird in xyz:c:/abc konvertiert.

Hinweis

Die URI-Klasse unterstützt bei der Verwendung von IP-Adressen sowohl die Quadschreibweise für IPv4 als auch die Hexadezimalschreibweise für IPv6. IPv6-Adressen müssen in eckigen Klammern angegeben werden, z. B. http://[::1].

Überlegungen zur Leistung

Wenn Sie eine Datei Web.config verwenden, die URIs zum Initialisieren Ihrer Anwendung enthält, wird die Dauer zum Verarbeiten der URIs zusätzlich verlängert, wenn die jeweiligen Schemabezeichner vom Standard abweichen. Initialisieren Sie die betroffenen Teile der Anwendung in diesem Fall erst dann, wenn die URIs benötigt werden, und nicht schon beim Start der Anwendung.

Hinweise für Aufrufer Aufgrund dieser Sicherheitsbedenken sollten Sie bei der Anwendung mit Umsicht vorgehen, wenn Sie Uri-Instanzen von nicht vertrauenswürdigen Quellen akzeptieren, und dontEscape auf true festgelegt ist. Sie können eine URI-Zeichenfolge auf Gültigkeit prüfen, indem Sie die IsWellFormedOriginalString-Methode aufrufen.

Hinweis zu Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows CE: .NET Compact Framework unterscheidet nicht zwischen relativen und absoluten Pfaden. Außerdem werden URI-Zeichenfolgen, denen das Schema file:// vorangestellt ist, in .NET Compact Framework anders verarbeitet als in .NET Framework. Die relative Angabe file://myfile wird als \\myfile aufgelöst. Die Angabe file:///myfile (3 Schrägstriche) wird in \myfile im Stammverzeichnis aufgelöst. Geben Sie absolute Pfade an, um die erfolgreiche Verarbeitung zu gewährleisten.

Beispiel

Im folgenden Beispiel wird eine Instanz der Uri-Klasse erstellt und für die Erstellung einer WebRequest-Instanz verwendet.

Dim siteUri As New Uri("https://www.contoso.com/")
        
Dim wr As WebRequest = WebRequest.Create(siteUri)
Uri siteUri = new Uri("https://www.contoso.com/");
 
WebRequest wr = WebRequest.Create(siteUri);
Uri^ siteUri = gcnew Uri( "https://www.contoso.com/" );
WebRequest^ wr = WebRequest::Create( siteUri );
Uri siteUri = new Uri("https://www.contoso.com/");
WebRequest wr = WebRequest.Create(siteUri);
var siteUri : Uri = new Uri("https://www.contoso.com/");
var wr : WebRequest = WebRequest.Create(siteUri);

Vererbungshierarchie

System.Object
  System.Uri

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

Uri-Member
System-Namespace
UriBuilder