Partilhar via


WCF e Nomes de Domínio Internacionalizados

O suporte foi adicionado para permitir serviços WCF com nomes de domínio internacionalizados (IDN). Um nome de domínio internacionalizado é um nome de domínio que contém caracteres não-ASCII. Esse suporte inclui a capacidade de hospedar um serviço WCF com um nome IDN e um cliente WCF para falar com um serviço Web com um nome IDN.

System.Uri e IDN

Uri tem duas propriedades Host e DnsSafeHost. Essas propriedades contêm valores Unicode ou Punycode, dependendo das definições de configuração do IDN.

O IDN é habilitado no arquivo de configuração de um aplicativo usando o seguinte XML:

<configuration>  
  <uri>  
    <idn enabled="All/AllExceptIntranet/None" />  
  </uri>  
</configuration>  

O <elemento idn> contém o atributo enabled que pode ser definido como um dos seguintes valores:

  1. "Nenhuma"

  2. "AllExceptIntranet"

  3. "Todas"

Quando a configuração IDN é definida como "Nenhum", nenhuma conversão é executada por Uri.Host ou Uri.DnsSafeHost. Quando a configuração IDN é definida como "Todos", uri. O host permanece Unicode e uri. DnsSafeHost é convertido em Punycode. Quando a configuração IDN é definida como "AllExceptIntranet", uri. DnsSafeHost é convertido em Punycode para endereços de internet e permanece Unicode para endereços de intranet. Essa configuração é importante para a resolução correta de nomes DNS. Observe que essa configuração não precisa ser configurada para o Windows 8 e versões mais recentes.

Aviso

Você nunca deve codificar um endereço usando Punycode. O WCF irá convertê-lo para você com base nas definições de configuração que você aplicar.

Aviso

Ao adicionar caracteres Unicode ao applicationHost.exe.config, salve o arquivo usando a codificação UTF-8.

Consulte também