已新增支援,以允許使用國際化功能變數名稱 (IDN) 的 WCF 服務。 國際化網域名稱是包含非 ASCII 字元的網域名稱。 這項支援包括承載具有IDN名稱的WCF服務,以及使用IDN名稱與網頁服務通訊的WCF用戶端。
System.Uri 和 IDN
Uri 有兩個屬性 Host 與 DnsSafeHost。 這些屬性包含 Unicode 或 Punycode 值,視 IDN 組態設定而定。
IDN 會使用下列 XML 在應用程式的組態檔中啟用
<configuration>
<uri>
<idn enabled="All/AllExceptIntranet/None" />
</uri>
</configuration>
<idn> 元素包含已啟用的屬性,可以設定為下列其中一個值:
無
“AllExceptIntranet”
“All”
當IDN設定設為 「None」時,Uri.Host 或 Uri.DnsSafeHost 不會執行任何轉換。 當 IDN 設定設為『All』時,uri.Host 會維持 Unicode,而 uri.DnsSafeHost 會轉換為 Punycode。 當IDN設定設為 「AllExceptIntranet」 時,uri。DnsSafeHost 會針對因特網位址轉換成 Punycode,而且會保留內部網路位址的 Unicode。 此設定對於正確的 DNS 名稱解析很重要。 請注意,不需要針對 Windows 8 和更新版本設定此設定。
警告
您絕對不應該使用 Punycode 將位址硬式編碼。 WCF 會根據您套用的組態設定為您轉換它。
警告
將 Unicode 字元新增至 applicationHost.exe.config時,請使用 UTF-8 編碼儲存盤案。