Uri.IdnHost Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u de RFC 3490-compatibele internationale domeinnaam van de host op met behulp van Punycode, indien van toepassing. Deze tekenreeks, nadat deze indien nodig ongezichtig is, is veilig te gebruiken voor DNS-omzetting.
public:
property System::String ^ IdnHost { System::String ^ get(); };
public string IdnHost { get; }
member this.IdnHost : string
Public ReadOnly Property IdnHost As String
Waarde van eigenschap
De hostnaam, opgemaakt met Punycode volgens de IDN-standaard.
Uitzonderingen
Dit exemplaar vertegenwoordigt een relatieve URI en deze eigenschap is alleen geldig voor absolute URI's.
Voorbeelden
In het volgende voorbeeld ziet u hoe Host en IdnHost verschillen tussen DNS-, IDN-, IPv4- en IPv6-invoer:
// 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
Opmerkingen
Deze eigenschap wordt verstrekt voor het gebruik van netwerkprotocollen op lager niveau waarvoor de domeinnaam in punycode-formulier is vereist. Als uw code deze specifieke indeling niet vereist, gebruikt Host u deze voor de hostnaam.
De waarde die door deze eigenschap wordt geretourneerd, is afhankelijk van het hosttype:
- Voor DNS-hostnamen: voor geldige internationale domeinnamen worden niet-ASCII-tekens gecodeerd (bijvoorbeeld
münchen.de).xn--mnchen-3ya.deHostnamen die geen geldige IDN's zijn, worden mogelijk geretourneerd as-is en bevatten niet-ASCII-tekens. - Voor IPv6-adressen: retourneert het adres zonder de omringende haakjes en bevat de zone-id (bereik) als er een is opgegeven (bijvoorbeeld
::1offe80::1%18). - Voor IPv4-adressen: retourneert de notatie met stippeltekens (bijvoorbeeld
192.168.1.1).
IdnHost is het voorkeurs alternatief voor de verouderde DnsSafeHost eigenschap, omdat het gedrag ervan niet afhankelijk is van app.config instellingen en is ontworpen om een waarde te produceren die geschikt is voor DNS-resolutie. Houd er rekening mee dat bellers voor IPv6-resultaten die een zone-id bevatten, mogelijk nog steeds de zone-id moeten verwijderen voordat ze de waarde doorgeven aan API's die deze niet accepteren.
Als u een escape-tekenreeks hebt gebruikt om dit exemplaar samen te stellen (bijvoorbeeld "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"), retourneert IdnHost een escape-tekenreeks. U moet een escape-tekenreeks die is geretourneerd door IdnHost, ongedaan maken voordat u die tekenreeks gebruikt voor DNS-omzetting. Houd er rekening mee dat als u een ongeldige niet-gescapede tekenreeks hebt gebruikt om dit exemplaar samen te stellen (bijvoorbeeld 'http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm'), retourneert IdnHost een niet-gescapede tekenreeks.