WCF 和国际化域名

添加了允许使用带有国际化域名 (IDN) 的 WCF 服务的支持。 国际化域名称是包含非 ASCII 字符的域名。 这种支持包括能够承载具有 IDN 名称的 WCF 服务以及 WCF 客户端,以便与具有 IDN 名称的 Web 服务进行对话。

System.Uri 和 IDN

Uri 具有两个属性:HostDnsSafeHost。 根据 IDN 配置设置,这些属性包含 Unicode 或 Punycode 值。

使用下面的 XML 在应用程序的配置文件中启用 IDN

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

<idn> 元素包含 enabled 属性,该属性可设置为以下某个值:

  1. "None"

  2. “AllExceptIntranet”

  3. “全部”

在 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 编码保存文件。

另请参阅