Uri.DnsSafeHost Vlastnost

Definice

Získá název hostitele, který po zrušení v případě potřeby je bezpečné použít pro překlad DNS.

public:
 property System::String ^ DnsSafeHost { System::String ^ get(); };
public string DnsSafeHost { get; }
member this.DnsSafeHost : string
Public ReadOnly Property DnsSafeHost As String

Hodnota vlastnosti

String

Hostitelská část identifikátoru URI ve formátu vhodném pro překlad DNS; nebo původní řetězec hostitele, pokud je již vhodný pro rozlišení.

Výjimky

Tato instance představuje relativní identifikátor URI a tato vlastnost je platná pouze pro absolutní identifikátory URI.

Příklady

Následující příklad vytvoří Uri instanci z řetězce. Znázorňuje rozdíl mezi hodnotou vrácenou z Host, která vrací název hostitele nebo adresu zadanou v identifikátoru URI a vrácenou hodnotou DnsSafeHost, která vrací adresu, která je bezpečná pro použití v překladu DNS.

// Create new Uri using a string address.         
Uri^ address = gcnew Uri( "http://[fe80::200:39ff:fe36:1a2d%254]/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%254".
Console::WriteLine( address->DnsSafeHost );
// Create new Uri using a string address.
Uri address = new Uri("http://[fe80::200:39ff:fe36:1a2d%254]/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%254".
Console.WriteLine(address.DnsSafeHost);
// Create new Uri using a string address.
let address = Uri "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"

// Make the address DNS safe.

// The following outputs "[fe80::200:39ff:fe36:1a2d]".
printfn $"{address.Host}"

// The following outputs "fe80::200:39ff:fe36:1a2d%254".
printfn $"{address.DnsSafeHost}"
    ' Create new Uri using a string address.         
    Dim address As New Uri("http://[fe80::200:39ff:fe36:1a2d%254]/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%254".
    Console.WriteLine(address.DnsSafeHost)

End Sub

Jak je vysvětleno v poznámkách, zrušte před překladem název hostitele. Tuto metodu UnescapeDataString můžete použít k zrušení zobrazení názvu hostitele a můžete jej vyřešit voláním GetHostEntry metody.

Poznámky

Pro adresy IPv6 se odeberou závorky ([]) a ScopeId vlastnost se nastaví, pokud byla zadána při vytváření této instance.

Pokud jste k vytvoření této instance použili řídicí řetězec (například "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"), vrátí DnsSafeHost řídicí řetězec. Zrušte zobrazení všech řídicích řetězců vrácených před DnsSafeHost použitím daného řetězce pro překlad DNS (viz příklad). Pokud jste k vytvoření této instance použili neplatný unescaped řetězec (například "http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm"), vrátí DnsSafeHost unescaped řetězec.

Vlastnost DnsSafeHost závisí na nastavení konfigurace v aplikacích .NET Framework, jak je popsáno dále v tomto tématu. Vlastnost IdnHost je poskytována jako upřednostňovaná alternativa k použití DnsSafeHost, protože IdnHost je zaručeno, že vždy bude dns bezpečný.

Vlastnost DnsSafeHost byla rozšířena v rozhraní .NET Framework v3.5, 3.0 SP1 a 2.0 SP1 tak, aby poskytovala podporu mezinárodního identifikátoru prostředků (IRI) na základě RFC 3987. Pokud ale chcete zajistit kompatibilitu aplikací s předchozími verzemi, musíte ji výslovně povolit v aplikacích .NET Framework. Pokud chcete povolit podporu IRI, vyžadují se následující dvě změny:

  1. Do souboru machine.config v adresáři .NET Framework 2.0 přidejte následující řádek:

    \<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

  2. Určete, jestli chcete, aby se na název domény použila analýza IDN (Internationalized Domain Name) a jestli se mají použít pravidla parsování IRI. Můžete to provést v machine.config nebo v souboruapp.config . Přidejte například následující položky:

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

Povolení IDN převede všechny popisky Unicode v názvu domény na jejich ekvivalenty Punycode. Punycode names obsahují pouze znaky ASCII a vždy začínají znakem xn- předponou. Důvodem je podpora existujících serverů DNS na internetu, protože většina serverů DNS podporuje jenom znaky ASCII (viz RFC 3940).

Povolení IDN má vliv pouze na hodnotu DnsSafeHost vlastnosti.

Existují tři možné hodnoty IDN v závislosti na používaných serverech DNS:

  • idn enabled = All

    Tato hodnota převede všechny názvy domén Unicode na jejich ekvivalenty punycode (názvy IDN).

  • idn enabled = AllExceptIntranet

    Tato hodnota převede všechny externí názvy domén Unicode tak, aby používaly ekvivalenty punycode (názvy IDN). V tomto případě pro zpracování mezinárodních názvů v místním intranetu by servery DNS používané pro intranet měly podporovat názvy Unicode.

  • Idn enabled = None

    Tato hodnota nepřevede žádné názvy domén Unicode tak, aby používaly Punycode. Toto je výchozí hodnota, která je konzistentní s chováním rozhraní .NET Framework 2.0.

Povolení parsování IRI (iriParsing enabled = true) normalizuje a kontroluje znaky podle pravidel IRI v RFC 3987. Výchozí hodnota je false a normalizuje a kontroluje znaky podle RFC 2396 a RFC 2732 (pro literály IPv6).

Další informace o podpoře IRI naleznete v části Poznámky pro Uri třídu.

Platí pro