WCF e nomes de domínio internacionalizados

O suporte foi adicionado para permitir os serviços WCF com IDN (nomes de domínio internacionalizados). 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 se comunicar 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 de IDN.

O IDN é habilitado no arquivo de configuração de um aplicativo por meio do XML a seguir

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

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

  1. "None"

  2. "AllExceptIntranet"

  3. "All"

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

Aviso

Você nunca deve embutir um endereço em código usando o Punycode. O WCF o converterá para você com base nas configurações aplicadas.

Aviso

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

Confira também