Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Uri.DnsSafeHost-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft einen Hostnamen ohne Escapezeichen ab, der sicher für die DNS-Auflösung verwendet werden kann.

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

public string DnsSafeHost { get; }

Eigenschaftswert

Type: System.String

Ein String mit dem Teil des Hostnamens ohne Escapezeichen im URI für die DNS-Auflösung oder die ursprüngliche Hostzeichenfolge ohne Escapezeichen, wenn diese zur Auflösung verwendet werden kann.

Exception Condition
InvalidOperationException

Diese Instanz einen relativen URI darstellt, und diese Eigenschaft ist nur für absolute URIs gültig.

Für IPv6-Adressen werden die Klammern ([]) entfernt und die ScopeId Eigenschaft festgelegt wird, wenn beim Erstellen dieser Instanz angegeben wurde.

Die DnsSafeHost Eigenschaft ist abhängig von Konfigurationseigenschaften, wie weiter unten in diesem Thema erläutert. Konfigurationseinstellungen können nicht geändert werden, von Windows Store-Apps zu inkonsistenten Ergebnissen führen können, wenn Sie mit DnsSafeHost. Die IdnHostEigenschaft wird bereitgestellt, als die bevorzugte Alternative Verwendung DnsSafeHost, da IdnHost ist garantiert immer DNS geschützt, unabhängig davon, was die aktuellen Einstellungen in app.config sein könnte.

Die DnsSafeHost Eigenschaft erweitert wurde in .NET Framework 3.5, 3.0 SP1 und 2.0 SP1 International Resource Identifier (IRI) bieten Unterstützung basierend auf RFC 3987. Aktuelle Benutzer werden keine Abweichung von .NET Framework 2.0-Verhalten feststellen, es sei denn, sie IRI explizit aktivieren. Dadurch werden die Anwendungskompatibilität mit früheren Versionen von .NET Framework.

Zum Aktivieren der Unterstützung für IRI, sind die folgenden zwei Änderungen erforderlich:

  1. Fügen Sie die folgende Zeile der Datei machine.config im .NET Framework 2.0-Verzeichnis

    < Name des Abschnitts = "Uri" type="System.Configuration.UriSection, System, Version = 2.0.0.0, Culture = Neutral, PublicKeyToken = b77a5c561934e089" / >

  2. Geben Sie, ob Internationalized Domain Name (IDN) auf den Domänennamen angewendet werden sollen und ob IRI-Analyseregeln angewendet werden soll. Dies kann in der Datei machine.config oder in der Datei "App.config" erfolgen. Fügen Sie z. B. Folgendes ein:

    <configuration>
      <uri>
      <idn enabled="All" />
      <iriParsing enabled="true" />
      </uri>
    </configuration>
    

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 ist zur Unterstützung von vorhandenen DNS-Server im Internet, da die meisten DNS-Server nur ASCII-Zeichen unterstützen (siehe RFC 3940).

Aktivieren von IDN nur beeinflusst den Wert von der DnsSafeHost Eigenschaft.

Es gibt drei mögliche Werte für IDN, abhängig von den DNS-Servern, die verwendet werden:

  • IDN aktiviert = All

    Dieser Wert wird Unicode-Domänennamen in ihre Punycode-Entsprechungen (IDN-Namen) konvertiert.

  • IDN aktiviert = AllExceptIntranet

    Dieser Wert wird alle externen Unicode-Domänennamen mit Punycode-Entsprechungen (IDN-Namen) konvertieren. In diesem Fall sollte die DNS-Server, die für das Intranet verwendet werden internationale Namen im lokalen Intranet verarbeitet, Unicode-Namen unterstützen.

  • IDN aktiviert = keine

    Dieser Wert wird nicht mit Unicode-Domänennamen mit Punycode konvertiert. Dies ist der Standardwert, der das .NET Framework 2.0-Verhalten entspricht.

Aktivieren der IRI-Analyse (IriParsing aktiviert = true) geschieht Normalisierung und zeichenüberprüfung gemäß den neuesten IRI-Regeln in RFC 3987. Der Standardwert ist false und Normalisierung und Überprüfung gemäß RFC 2396 und RFC 2732 (für IPv6-Literale) Zeichen.

Weitere Informationen zur IRI-Unterstützung finden Sie im Abschnitt "Hinweise" für die Uri Klasse.

Das folgende Beispiel erstellt eine Uri -Instanz aus einer Zeichenfolge. Veranschaulicht den Unterschied zwischen der von zurückgegebene Wert Host, die den Hostnamen oder die im URI angegebene Adresse zurückgibt, und der zurückgegebene Wert von DnsSafeHost, womit eine Adresse, die sicher für die DNS-Auflösung verwendet wird.

// Create new Uri using a string address.         
Uri address = new Uri("http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm");

// Make the address DNS safe. 

// The following outputs "[fe80::200:39ff:fe36:1a2d]".
Console.WriteLine(address.Host);

// The following outputs "fe80::200:39ff:fe36:1a2d%4".
Console.WriteLine(address.DnsSafeHost);

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: