WCF и международные доменные имена

Добавлена поддержка служб WCF с интернационализированными именами домена (IDN). Интернационализированное имя домена представляет собой имя домена, содержащее символы, не входящие в набор символов ASCII. Данная поддержка включает в себя как возможность размещения службы WCF с именем IDN, так и возможность диалога клиента WCF с веб-службой с именем IDN.

System.Uri и IDN

У объекта класса Uri есть два свойства: Host и DnsSafeHost. Эти свойства содержат значения Unicode или Punycode в зависимости от параметров конфигурации IDN.

IDN активируется в файле конфигурации приложения с помощью следующего кода XML

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

Элемент <idn> содержит включенный атрибут, который можно задать одним из следующих значений:

  1. "None"

  2. "AllExceptIntranet"

  3. "All"

Если для параметра IDN задано значение None, преобразования не выполняются Uri.Host или Uri.Dns Сейф Host. Если для параметра IDN задано значение All, URI. Узел остается Юникодом и универсальным кодом ресурса (URI). Dns Сейф Host преобразуется в Punycode. Если для параметра IDN задано значение AllExceptIntranet, URI. Dns Сейф Host преобразуется в Punycode для адресов Интернета и остается Юникодом для адресов интрасети. Этот параметр важен для верного разрешения имен DNS. Обратите внимание, что он не требует настройки в Windows 8 и более поздних версиях.

Предупреждение

Никогда не следует вводить адрес вручную с использованием Punycode. WCF преобразует адрес в соответствии с примененными параметрами конфигурации.

Предупреждение

При добавлении в applicationHost.exe.config символов Юникода сохраните файл в кодировке UTF-8.

См. также