Uri.IdnHost Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá RFC 3490 kompatibilní mezinárodní název domény hostitele pomocí punycode podle potřeby. Tento řetězec po zrušení v případě potřeby je bezpečný pro překlad DNS.
public:
property System::String ^ IdnHost { System::String ^ get(); };
public string IdnHost { get; }
member this.IdnHost : string
Public ReadOnly Property IdnHost As String
Hodnota vlastnosti
Název hostitele formátovaný punycode podle standardu IDN.
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 ukazuje, jak Host a IdnHost liší se mezi vstupy DNS, IDN, IPv4 a IPv6:
// Demonstrate differences between Host, IdnHost, and DnsSafeHost.
// Example 1: Regular hostname (ASCII).
Console.WriteLine("Example 1: Regular ASCII hostname");
Uri uri1 = new Uri("http://www.contoso.com:8080/path");
Console.WriteLine($" Host: {uri1.Host}"); // www.contoso.com
Console.WriteLine($" IdnHost: {uri1.IdnHost}"); // www.contoso.com
Console.WriteLine($" DnsSafeHost: {uri1.DnsSafeHost}"); // www.contoso.com
Console.WriteLine();
// Example 2: International domain name (non-ASCII).
Console.WriteLine("Example 2: International domain name");
Uri uri2 = new Uri("http://münchen.de/path");
Console.WriteLine($" Host: {uri2.Host}"); // münchen.de (original)
Console.WriteLine($" IdnHost: {uri2.IdnHost}"); // xn--mnchen-3ya.de (punycode)
Console.WriteLine($" DnsSafeHost: {uri2.DnsSafeHost}"); // münchen.de or xn--mnchen-3ya.de, depending on configuration.
Console.WriteLine();
// Example 3: International domain name already in punycode (encoded) form.
Console.WriteLine("Example 3: Already-encoded international domain name");
Uri uri2Encoded = new Uri("http://xn--mnchen-3ya.de/path");
Console.WriteLine($" Host: {uri2Encoded.Host}"); // xn--mnchen-3ya.de (as provided)
Console.WriteLine($" IdnHost: {uri2Encoded.IdnHost}"); // xn--mnchen-3ya.de (already punycode)
Console.WriteLine($" DnsSafeHost: {uri2Encoded.DnsSafeHost}"); // xn--mnchen-3ya.de
Console.WriteLine();
// Example 4: IPv6 address without zone ID.
Console.WriteLine("Example 4: IPv6 address without zone ID");
Uri uri3 = new Uri("http://[::1]:8080/path");
Console.WriteLine($" Host: {uri3.Host}"); // [::1] (with brackets)
Console.WriteLine($" IdnHost: {uri3.IdnHost}"); // ::1 (without brackets)
Console.WriteLine($" DnsSafeHost: {uri3.DnsSafeHost}"); // ::1 (without brackets)
Console.WriteLine();
// Example 5: IPv6 link-local address with zone ID.
Console.WriteLine("Example 5: IPv6 link-local address with zone ID");
Uri uri4 = new Uri("http://[fe80::1%10]:8080/path");
Console.WriteLine($" Host: {uri4.Host}"); // [fe80::1] (with brackets, no zone ID)
Console.WriteLine($" IdnHost: {uri4.IdnHost}"); // fe80::1%10 (without brackets, with zone ID)
Console.WriteLine($" DnsSafeHost: {uri4.DnsSafeHost}"); // fe80::1%10 (without brackets, with zone ID)
Console.WriteLine();
// Example 6: IPv4 address.
Console.WriteLine("Example 6: IPv4 address");
Uri uri5 = new Uri("http://192.168.1.1:8080/path");
Console.WriteLine($" Host: {uri5.Host}"); // 192.168.1.1
Console.WriteLine($" IdnHost: {uri5.IdnHost}"); // 192.168.1.1
Console.WriteLine($" DnsSafeHost: {uri5.DnsSafeHost}"); // 192.168.1.1
Poznámky
Tato vlastnost je poskytována pro použití síťových protokolů nižší úrovně, které vyžadují název domény ve formuláři Punycode. Pokud váš kód tento konkrétní formát nevyžaduje, použijte Host ho pro název hostitele.
Hodnota vrácená touto vlastností závisí na typu hostitele:
- Pro názvy hostitelů DNS: Pro platné mezinárodní názvy domén jsou zakódované znaky jiné než ASCII (například
münchen.dese stanouxn--mnchen-3ya.de). Názvy hostitelů, které nejsou platnými názvy IDN, můžou být vráceny as-is a obsahují znaky jiné než ASCII. - Pro adresy IPv6: Vrátí adresu bez okolních závorek a obsahuje ID zóny (obor), pokud bylo zadáno (například
::1fe80::1%18). - Pro adresy IPv4: Vrátí tečkovanou desetinnou notaci (například
192.168.1.1).
IdnHost je upřednostňovanou alternativou ke starší DnsSafeHost vlastnosti, protože její chování nezávisí na nastaveníapp.config a je navržené tak, aby vytvořilo hodnotu, která je vhodná pro překlad DNS. Všimněte si, že u výsledků protokolu IPv6, které obsahují ID zóny, můžou volající ještě před předáním hodnoty rozhraním API, které ho nepřijímají, vyžadovat odebrání ID zóny.
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í IdnHost řídicí řetězec. Před použitím daného řetězce pro překlad DNS byste měli zrušit všechny řídicí řetězce vrácené z IdnHost. Mějte na paměti, že pokud jste použili neplatný unescaped řetězec k vytvoření této instance (například "http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm"), pak IdnHost vrátí unescaped řetězec.