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> содержит включенный атрибут, который можно задать одним из следующих значений:
"None"
"AllExceptIntranet"
"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.