Uri.DnsSafeHost Uri.DnsSafeHost Uri.DnsSafeHost Uri.DnsSafeHost Property

Définition

Obtient un nom d’hôte qui, une fois sans séquence d’échappement si nécessaire, peut être utilisé en toute sécurité pour la résolution DNS.Gets a host name that, after being unescaped if necessary, is safe to use for DNS resolution.

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

Valeur de propriété

String Qui contient la partie hôte de l’URI dans un format approprié pour la résolution DNS ; ou la chaîne d’hôte d’origine, si elle est déjà adaptée à la résolution.A String that contains the host part of the URI in a format suitable for DNS resolution; or the original host string, if it is already suitable for resolution.

Exceptions

Cette instance représente un URI relatif, et cette propriété est uniquement valide pour les URI absolus.This instance represents a relative URI, and this property is valid only for absolute URIs.

Exemples

L’exemple suivant crée une Uri instance à partir d’une chaîne.The following example creates a Uri instance from a string. Elle illustre la différence entre la valeur retournée par Host, qui retourne le nom d’hôte ou l’adresse spécifiés dans l’URI, et la DnsSafeHostvaleur retournée par, qui retourne une adresse qui peut être utilisée en toute sécurité dans la résolution DNS.It illustrates the difference between the value returned from Host, which returns the host name or address specified in the URI, and the value returned from DnsSafeHost, which returns an address that is safe to use in DNS resolution.

// 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.         
    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

Comme expliqué dans la section Notes, annulez l’échappement du nom d’hôte avant de le résoudre.As explained in Remarks, unescape the host name before resolving it. Vous pouvez utiliser la UnescapeDataString méthode pour supprimer l’échappement du nom d’hôte, et vous pouvez le résoudre en GetHostEntry appelant la méthode.You can use the UnescapeDataString method to unescape the host name, and you can resolve it by calling the GetHostEntry method.

Remarques

Pour les adresses IPv6, les crochets ([]) sont supprimés et ScopeId la propriété est définie, si celle-ci a été spécifiée lors de la construction de cette instance.For IPv6 addresses, the brackets ([]) are removed and the ScopeId property is set, if one was specified when this instance was constructed.

Si vous avez utilisé une chaîne échappée pour construire cette instance (par exemple "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm",), DnsSafeHost retourne une chaîne placée dans une séquence d’échappement.If you used an escaped string to construct this instance (for example, "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"), then DnsSafeHost returns an escaped string. Annulez l’échappement des chaînes échappées DnsSafeHost retournées par avant d’utiliser cette chaîne pour la résolution DNS (Voir l’exemple).Unescape any escaped string returned from DnsSafeHost before using that string for DNS resolution (see the Example). Si vous avez utilisé une chaîne sans séquence d’échappement non valide pour construire cette instance (par exemple, « http://[fe80 :: 200:39ff : FE36:1A2d% 4]/temp/example.htm »), DnsSafeHost retourne une chaîne sans séquence d’échappement.If you used an invalid unescaped string to construct this instance (for example, "http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm"), then DnsSafeHost returns an unescaped string.

La DnsSafeHost propriété dépend des paramètres de configuration, comme indiqué plus loin dans cette rubrique.The DnsSafeHost property is dependent on configuration settings, as discussed later in this topic. Les paramètres de configuration ne peuvent pas être modifiés par les applications du Windows Store, ce qui peut DnsSafeHostentraîner des résultats incohérents lors de l’utilisation de.Configuration settings cannot be changed by Windows Store applications, which can lead to inconsistent results when using DnsSafeHost. La IdnHost propriété est fournie comme alternative à l’utilisation DnsSafeHostde, car IdnHost elle est garantie pour toujours être sécurisée pour le DNS, quels que soient les paramètres actuels de app. config .The IdnHost property is provided as the preferred alternative to using DnsSafeHost, because IdnHost is guaranteed to always be DNS safe, no matter what the current app.config settings might be.

La DnsSafeHost propriété a été étendue dans .NET Framework v 3.5, 3,0 SP1 et 2,0 SP1 pour fournir une prise en charge des IRI (International Resource Identifier) basée sur RFC 3987.The DnsSafeHost property has been extended in .NET Framework v3.5, 3.0 SP1, and 2.0 SP1 to provide International Resource Identifier (IRI) support based on RFC 3987. Les utilisateurs actuels ne verront aucun changement dans le comportement de .NET Framework 2.0, sauf s’ils activent spécifiquement les IRI.Current users will not see any change from the .NET Framework 2.0 behavior unless they specifically enable IRI. Cela garantit la compatibilité des applications avec les versions antérieures de .NET Framework.This ensures application compatibility with prior versions of the .NET Framework.

Pour activer la prise en charge des IRI, les deux modifications suivantes sont requises :To enable support for IRI, the following two changes are required:

  1. Ajoutez la ligne suivante au fichier machine. config dans le répertoire .NET Framework 2,0Add the following line to the machine.config file under the .NET Framework 2.0 directory

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

  2. Spécifiez si vous souhaitez appliquer l’analyse des IDN (Internationalized Domain Name) au nom de domaine et si les règles d’analyse IRI doivent être appliquées.Specify whether you want Internationalized Domain Name (IDN) parsing applied to the domain name and whether IRI parsing rules should be applied. Cela peut être fait dans le fichier machine. config ou app. config .This can be done in the machine.config or in the app.config file. Par exemple, ajoutez ce qui suit :For example, add the following:

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

L’activation des IDN entraîne la conversion de toutes les étiquettes Unicode d’un nom de domaine en leurs équivalents Punycode.Enabling IDN will convert all Unicode labels in a domain name to their Punycode equivalents. Les noms Punycode contiennent uniquement des caractères ASCII et commencent toujours par le préfixe xn--.Punycode names contain only ASCII characters and always start with the xn-- prefix. Cela permet de garantir la prise en charge des serveurs DNS existants sur Internet, la plupart d’entre eux prenant uniquement en charge les caractères ASCII (consultez la norme RFC 3940).The reason for this is to support existing DNS servers on the Internet, since most DNS servers only support ASCII characters (see RFC 3940).

L’activation de l’IDN affecte uniquement la DnsSafeHost valeur de la propriété.Enabling IDN only affects the value of the DnsSafeHost property.

Il existe trois valeurs possibles pour l’IDN selon les serveurs DNS utilisés :There are three possible values for IDN depending on the DNS servers that are used:

  • IDN activé = tousidn enabled = All

    Cette valeur convertit tous les noms de domaine Unicode en leurs équivalents Punycode (noms IDN).This value will convert any Unicode domain names to their Punycode equivalents (IDN names).

  • IDN activé = AllExceptIntranetidn enabled = AllExceptIntranet

    Cette valeur convertit tous les noms de domaine Unicode externes pour utiliser leurs équivalents Punycode (noms IDN).This value will convert all external Unicode domain names to use the Punycode equivalents (IDN names). Dans ce cas, pour gérer des noms internationaux sur l'Intranet local, les serveurs DNS utilisés pour l'Intranet doivent prendre en charge les noms Unicode.In this case to handle international names on the local Intranet, the DNS servers that are used for the Intranet should support Unicode names.

  • IDN activé = aucunidn enabled = None

    Cette valeur ne convertit aucun nom de domaine Unicode pour utiliser Punycode.This value will not convert any Unicode domain names to use Punycode. Il s’agit de la valeur par défaut qui est cohérente avec le comportement .NET Framework 2,0.This is the default value which is consistent with the .NET Framework 2.0 behaviour.

L’activation de l’analyse IRI (iriParsing trueEnabled =) effectue la normalisation et la vérification des caractères selon les dernières règles IRI de la norme RFC 3987.Enabling IRI parsing (iriParsing enabled = true) will do normalization and character checking according to the latest IRI rules in RFC 3987. La valeur par défaut false est et effectue la normalisation et la vérification des caractères selon les spécifications RFC 2396 et RFC 2732 (pour les littéraux IPv6).The default value is false and will do normalization and character checking according to RFC 2396 and RFC 2732 (for IPv6 literals).

Pour plus d’informations sur la prise en charge des IRI, consultez Uri la section Notes de la classe.For more information on IRI support, see the Remarks section for the Uri class.

S’applique à