WCF 和国际化域名

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

System.Uri 和 IDN

Uri 具有两个属性 HostDnsSafeHost。 这些属性包含 Unicode 或 Punycode 值,具体取决于 IDN 配置设置。

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

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

<idn> 元素包含可设置为以下值之一的已启用属性:

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

另请参阅