已添加支持,允许 WCF 服务使用国际化域名(IDN)。 国际化域名是包含非 ASCII 字符的域名。 这种支持包括能够承载具有 IDN 名称的 WCF 服务以及 WCF 客户端,以便与具有 IDN 名称的 Web 服务进行对话。
System.Uri 和 IDN
Uri 具有两个属性 Host 和 DnsSafeHost。 这些属性包含 Unicode 或 Punycode 值,具体取决于 IDN 配置设置。
使用以下 XML 在应用程序的配置文件中启用 IDN
<configuration>
<uri>
<idn enabled="All/AllExceptIntranet/None" />
</uri>
</configuration>
<idn> 元素包含可设置为以下值之一的已启用属性:
“None”
“AllExceptIntranet”
“全部”
当 IDN 设置设置为“None”时,Uri.Host 或 Uri.DnsSafeHost 不会执行任何转换。 当 IDN 设置为“All”时,uri.Host 保留 Unicode,而 uri.DnsSafeHost 转换为 Punycode。 在 IDN 设置设为“AllExceptIntranet”时,uri.DnsSafeHost 转换为 Punycode 以便用于 Internet 地址,并且保留 Unicode 以便用于 Intranet 地址。 此设置对于正确的 DNS 名称解析非常重要。 请注意,不需要为 Windows 8 和更新版本配置此设置。
警告
不应使用 Punycode 对地址进行硬编码。 WCF 将会基于您应用的配置设置为您转换它。
警告
将 Unicode 字符添加到 applicationHost.exe.config时,请使用 UTF-8 编码保存文件。