在 IIS 與 WAS 中以組態為基礎的啟動
一般來說,在 Internet Information Services (IIS) 或 Windows 處理序啟用服務 (WAS) 底下裝載 Windows Communication Foundation (WCF) 服務時,您必須提供 .svc 檔案。 .svc 檔案包含服務名稱和選擇性自訂服務主機處理站。 此額外的檔案會增加管理能力的負荷。 以組態為基礎的啟動功能可免除 .svc 檔案的需求以及關聯的負荷。
以組態為基礎的啟用
以組態為基礎的啟動會使用放置於 .svc 檔案中的中繼資料,並將中繼資料放置於 Web.config 檔案中。 在 <serviceHostingEnvironment>
元素中有 <serviceActivations>
元素。 在 <serviceActivations>
元素中有一或多個 <add>
元素,每個裝載的服務都有一個元素。 <add>
元素包含屬性,可讓您設定服務和服務類型的相對位址,或設定服務主機處理站。 下列組態範例程式碼會示範此區段的使用方式。
注意
每個 <add>
元素都必須指定一個服務或處理站屬性。 系統允許同時指定服務和處理站屬性。
<serviceHostingEnvironment>
<serviceActivations>
<add relativeAddress="MyServiceAddress" service="Service" factory="MyServiceHostFactory"/>
</serviceActivations>
</serviceHostingEnvironment>
如果 Web.config 檔案具有這項設定,您就可以將服務原始程式碼放置於應用程式的 App_Code 目錄中,或者將已編譯的組件放置於應用程式的 Bin 目錄中。
注意
- 使用以組態為基礎的啟動時,不支援 .svc 檔案中的內嵌程式碼。
relativeAddress
屬性必須設為相對位址,例如 "<sub-directory>/service.svc" or "~/<sub-directory/service.svc"。- 如果您註冊未包含與 WCF 關聯之已知副檔名的相對位址,便會擲回組態例外。
- 指定的相對位址與虛擬應用程式的根相關。
- 由於組態模型為階層式,主機上註冊的相對位址和網站層級會由虛擬應用程式繼承。
- 在組態檔中的註冊優先權高於 .svc、.xamlx、.xoml 或其他檔案中的設定。
- 任何在 URI 中傳送至 IIS/WAS 的 ‘\’ (反斜線) 會自動轉換為 ‘/’ (正斜線)。 如果新增包含 ‘\’ 的相對位址且您傳送使用相對位址的 URI 至 IIS,反斜線會轉換為正斜線,而 IIS 無法將其與相對位址比對。 IIS 會送出追蹤資訊,表示找不到相符的項目。