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

Definição

Obtém um nome do host que, depois de não ser escapada, se necessário, é seguro para ser usado para a resolução de 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

Valor da propriedade

Um String que contém a parte do host do URI em um formato adequado para resolução DNS, ou a cadeia de caracteres de host original, se já for adequada para resolução.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.

Exceções

Esta instância representa uma URL relativa, e esta propriedade só é válida para URIs absolutos.This instance represents a relative URI, and this property is valid only for absolute URIs.

Exemplos

O exemplo a seguir cria Uri uma instância de uma cadeia de caracteres.The following example creates a Uri instance from a string. Ele ilustra a diferença entre o valor retornado de Host, que retorna o nome do host ou endereço especificado no URI, e o valor retornado de DnsSafeHost, que retorna um endereço seguro para uso na resolução 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

Conforme explicado em comentários, desescape o nome do host antes de solucioná-lo.As explained in Remarks, unescape the host name before resolving it. Você pode usar o UnescapeDataString método para cancelar o escape do nome do host e pode resolvê-lo chamando GetHostEntry o método.You can use the UnescapeDataString method to unescape the host name, and you can resolve it by calling the GetHostEntry method.

Comentários

Para endereços IPv6, os colchetes ([]) são removidos e a ScopeId propriedade é definida, se um tiver sido especificado quando essa instância foi construída.For IPv6 addresses, the brackets ([]) are removed and the ScopeId property is set, if one was specified when this instance was constructed.

Se você usou uma cadeia de caracteres de escape para construir essa instância ( "http://[fe80::200:39ff:fe36:1a2d%254]/temp/example.htm"por exemplo,), DnsSafeHost retornará uma cadeia de caracteres de escape.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. Desescape qualquer cadeia de caracteres de DnsSafeHost escape retornada antes de usar essa cadeia de caracteres para resolução DNS (consulte o exemplo).Unescape any escaped string returned from DnsSafeHost before using that string for DNS resolution (see the Example). Se você usou uma cadeia de caracteres sem escape inválida para construir essa instância (por exemplo, "http://[FE80:: 200:39ff: fe36:1a2d% 4]/Temp/example.htm"), DnsSafeHost retornará uma cadeia de caracteres sem escape.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.

A DnsSafeHost Propriedade depende das definições de configuração, conforme discutido posteriormente neste tópico.The DnsSafeHost property is dependent on configuration settings, as discussed later in this topic. As definições de configuração não podem ser alteradas por aplicativos da Windows Store, o que pode levar DnsSafeHosta resultados inconsistentes ao usar o.Configuration settings cannot be changed by Windows Store applications, which can lead to inconsistent results when using DnsSafeHost. A IdnHost propriedade é fornecida como a alternativa preferida ao uso DnsSafeHostdo, IdnHost porque é garantido que sempre seja seguro do DNS, independentemente do que as configurações atuais de app. config podem ser.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.

A DnsSafeHost Propriedade foi estendida no .NET Framework v 3.5, 3,0 SP1 e 2,0 SP1 para fornecer suporte ao IRI (identificador de recurso internacional) com base na 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. Os usuários atuais não verão qualquer mudança do comportamento do .NET Framework 2.0, a menos que habilitem o IRI especificamente.Current users will not see any change from the .NET Framework 2.0 behavior unless they specifically enable IRI. Isso garante a compatibilidade do aplicativo com versões anteriores do .NET Framework.This ensures application compatibility with prior versions of the .NET Framework.

Para habilitar o suporte para IRI, as duas alterações a seguir são necessárias:To enable support for IRI, the following two changes are required:

  1. Adicione a seguinte linha ao arquivo Machine. config no diretório .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. Especifique se você deseja a análise de nome de domínio internacionalizado (IDN) aplicada ao nome de domínio e se as regras de análise de IRI devem ser aplicadas.Specify whether you want Internationalized Domain Name (IDN) parsing applied to the domain name and whether IRI parsing rules should be applied. Isso pode ser feito no Machine. config ou no arquivo app. config .This can be done in the machine.config or in the app.config file. Por exemplo, adicione o seguinte:For example, add the following:

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

Habilitar o IDN converterá todos os rótulos Unicode de um nome de domínio para seus equivalentes em Punycode.Enabling IDN will convert all Unicode labels in a domain name to their Punycode equivalents. Os nomes Punycode contêm apenas caracteres ASCII e sempre começam com o prefixo xn--.Punycode names contain only ASCII characters and always start with the xn-- prefix. A razão para isso é dar suporte a servidores DNS existentes na Internet, pois a maioria dos servidores DNS dá suporte somente a caracteres ASCII (consulte 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).

Habilitar o IDN afeta apenas o valor da DnsSafeHost propriedade.Enabling IDN only affects the value of the DnsSafeHost property.

Há três valores possíveis para IDN, dependendo dos servidores DNS que são usados:There are three possible values for IDN depending on the DNS servers that are used:

  • IDN habilitado = todosidn enabled = All

    Esse valor converterá todos os nomes de domínio Unicode em seus equivalentes do Punycode (nomes IDN).This value will convert any Unicode domain names to their Punycode equivalents (IDN names).

  • IDN habilitado = AllExceptIntranetidn enabled = AllExceptIntranet

    Esse valor converterá todos os nomes de domínio Unicode externos para usar os equivalentes do Punycode (nomes IDN).This value will convert all external Unicode domain names to use the Punycode equivalents (IDN names). Nesse caso, para manipular nomes internacionais na Intranet local, os servidores DNS usados para a Intranet devem dar suporte a nomes 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 habilitado = nenhumidn enabled = None

    Esse valor não converterá nenhum nome de domínio Unicode para usar o Punycode.This value will not convert any Unicode domain names to use Punycode. Esse é o valor padrão que é consistente com o comportamento .NET Framework 2,0.This is the default value which is consistent with the .NET Framework 2.0 behaviour.

Habilitar a análise de IRI (iriParsing Enabled true=) fará a normalização e a verificação de caracteres de acordo com as regras de IRI mais recentes no RFC 3987.Enabling IRI parsing (iriParsing enabled = true) will do normalization and character checking according to the latest IRI rules in RFC 3987. O valor padrão é false e fará a normalização e a verificação de caracteres de acordo com RFC 2396 e RFC 2732 (para literais IPv6).The default value is false and will do normalization and character checking according to RFC 2396 and RFC 2732 (for IPv6 literals).

Para obter mais informações sobre o suporte IRI, consulte a seção Comentários da classe Uri.For more information on IRI support, see the Remarks section for the Uri class.

Aplica-se a