共用方式為


部署已裝載網際網路資訊服務的 WCF 服務

開發與部署由 Internet Information Services (IIS) 裝載的 Windows Communication Foundation (WCF) 服務包含下列工作:

  • 確定 IIS、ASP.NET、WCF 和 WCF 啟動元件都已正確安裝及註冊。

  • 建立新的 IIS 應用程式,或是重複使用現有的 ASP.NET 應用程式。

  • 建立 WCF 服務的 .svc 檔案。

  • 將服務實作部署到 IIS 應用程式。

  • 設定 WCF 服務。

如需建立 IIS 裝載的 WCF 服務之詳細逐步解說,請參閱 HOW TO:在 IIS 中裝載 WCF 服務

確定 IIS、ASP.NET 和 WCF 已正確安裝及註冊

您必須安裝 WCF、IIS 和 ASP.NET,才能讓 IIS 裝載的 WCF 服務正確運作。安裝 WCF (屬於 .NET Framework 3.0 一部分)、ASP.NET 和 IIS 的程序可能會因所使用的作業系統版本而異。如需詳細資訊安裝 WCF 和 .NET Framework 3.0 的詳細資訊,請參閱 Microsoft .NET Framework 4.0 Web 安裝程式。您可以在安裝 IIS (英文) 上找到安裝 IIS 的指示。

.NET Framework 3.0 的安裝處理序會將 WCF 自動註冊到 IIS 上 (如果 IIS 已經存在電腦上的話)。如果 IIS 是在 .NET Framework 3.0 之後才安裝,則您需要採取額外步驟將 WCF 註冊到 IIS 和 ASP.NET。請依據您的作業系統,採取下列適當的步驟:

  • Windows XP SP2 與 Windows Server 2003:使用 ServiceModel 註冊工具 (ServiceModelReg.exe) 工具將 WCF 註冊到 IIS:若要使用此工具,請在命令提示字元中輸入 ServiceModelReg.exe /i /x

  • Windows Vista:安裝 .NET Framework 3.0 的 Windows Communication Foundation 啟動元件子元件。若要這麼做,在 [控制台] 中,按一下 [新增或移除程式],然後按一下 [新增/移除 Windows 元件]。這樣會啟動 [Windows 元件精靈]。

最後,您必須確認 ASP.NET 設定成使用 .NET Framework 4.0 版。您可以使用 -i 選項來執行 ASPNET_Regiis 工具,藉以達成此目的。如需詳細資訊,請參閱 ASP.NET IIS 註冊工具

建立新的 IIS 應用程式或是重複使用現有的 ASP.NET 應用程式

IIS 裝載的 WCF 服務必須駐留在 IIS 應用程式裡面。您可以建立新的 IIS 應用程式來專門裝載 WCF 服務。或者,您可以將 WCF 服務部署到已經裝載了 ASP.NET 2.0 內容 (例如 .aspx 頁面和 ASP.NET Web 服務 [ASMX]) 的現有應用程式上。如需詳細資訊這些選項的詳細資訊,請參閱 WCF 服務與 ASP.NET 一文中的<同時裝載 WCF 和 ASP.NET>和<在 ASP.NET 相容性模式中裝載 WCF 服務>小節說明。

請注意,IIS 6.0 及更新版本會定期重新啟動獨立的物件導向程式設計應用程式。預設值為 1740 分鐘。支援的最大值為 71,582 分鐘。您可以啟用這項重新啟動。如需詳細資訊這個屬性的詳細資訊,請參閱PeriodicRestartTime (本頁面可能為英文)。

建立 WCF 服務的 .svc 檔案

裝載在 IIS 的 WCF 服務會於 IIS 應用程式中以特殊內容檔 (.svc 檔) 形式表示。這個模型與 IIS 應用程式將 ASMX 頁面表示為 .asmx 檔案的方式很類似。.svc 檔案包含 WCF 專屬的處理指示詞 (@ServiceHost),可允許 WCF 裝載基礎結構啟動裝載的服務以回應傳入訊息。以下宣告是最常見的 .svc 檔語法:

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

它包含 @ServiceHost 指示詞與單一屬性 ServiceService 屬性值就是服務實作的 Common Language Runtime (CLR) 型別名稱。基本上,使用此指示詞與使用下列程式碼來建立服務主機是一樣的:

      new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

其他的裝載組態,例如建立服務的基底位址清單,也能夠透過此方式來完成。您也可以使用自訂的 ServiceHostFactory 來延伸指示詞,以便搭配自訂裝載方案來使用。裝載 WCF 服務的 IIS 應用程式不負責管理 ServiceHost 執行個體的建立與存留期。Managed WCF 裝載基礎結構會在第一次收到 .svc 檔案要求時,動態建立必要的 ServiceHost 執行個體。除非程式碼明確地關閉此執行個體,或當應用程式已回收時,才會釋放此執行個體。

如需詳細資訊 .svc 檔案語法的詳細資訊,請參閱 @ServiceHost

將服務實作部署到 IIS 應用程式

裝載在 IIS 中的 WCF 服務會使用與 ASP.NET 2.0 相同的動態編譯模型。就像 ASP.NET,您可以透過好幾種方式,將 IIS 裝載的 WCF 服務的實作程式碼部署到幾個不同的位置,如下所示:

  • 做為預先編譯的 .dll 檔,位於全域組件快取 (GAC) 或應用程式的 \bin 目錄中。預先編譯的二進位檔會等到部署了新版本的類別庫之後才會更新。

  • 成為未編譯的來源檔,位於應用程式的 \App_Code 目錄中。位於此目錄的來源檔會在處理應用程式的第一個要求時動態需要。在收到下一個要求時,對 \App_Code 目錄中檔案的任何變更都會導致整個應用程式的回收與重新編譯。

  • 成為未編譯的程式碼,直接位於 .svc 檔案中。實作程式碼也可以內嵌於服務的 .svc 檔案中,位於 @ServiceHost 指示詞後。在收到下一個要求時,對內嵌程式碼的任何變更都會導致整個應用程式的回收與重新編譯。

如需詳細資訊 ASP.NET 2.0 編譯模型的詳細資訊,請參閱 ASP.NET 編譯概觀 (本頁面可能為英文)。

設定 WCF 服務

IIS 裝載的 WCF 服務會將其組態儲存在應用程式的 Web.config 檔案中。IIS 裝載的服務會使用與在 IIS 外部裝載的 WCF 服務相同的組態項目與語法。然而,IIS 裝載環境具備了下列特殊限制:

  • IIS 裝載服務的基底位址。

  • 在 IIS 外部裝載 WCF 服務的應用程式可以將基底位址 URI 集合傳送至 ServiceHost 建構函式,或是提供服務組態中的 <host> 項目,藉此來控制所裝載的服務基底位址。IIS 所裝載的服務無法控制自己的基底位址;IIS 裝載服務的基底位址就是所屬 .svc 檔案的位址。

IIS 裝載服務的端點位址

透過 IIS 裝載時,端點位址一律視為相對於 .svc 檔案 (用來代表服務) 的位址。例如,如果 WCF 服務的起始位址為包含下列端點組態的 https://localhost/Application1/MyService.svc。

<endpoint address="anotherEndpoint" .../>

這會提供可以透過 "https://localhost/Application1/MyService.svc/anotherEndpoint" 抵達的端點。

同理,使用空字串當成相對位址的端點組態項目也會提供可透過 https://localhost/Application1/MyService.svc (亦即基底位址) 抵達的端點。

<endpoint address="" ... />

請務必針對 IIS 裝載服務端點使用相對端點位址。如果端點位址並未指向 IIS 應用程式 (負責裝載會公開端點的服務),則提供完整的端點位址 (例如,https://localhost/MyService.svc) 可能會在部署服務時導致錯誤。針對裝載的服務使用相對端點位址可以避免這些潛在的衝突。

可用的傳輸

IIS 5.1 和 IIS 6.0 所裝載的 WCF 服務僅限於使用 HTTP 通訊。在這些 IIS 平台上,設定裝載的服務來使用非 HTTP 繫結會在服務啟動期間導致錯誤。在 IIS 7.0 上,支援的傳輸包括 HTTP、Net.TCP、Net.Pipe、Net.MSMQ,和 msmq.formatname,以便提供與現有 MSMQ 應用程式的回溯相容性。

HTTP 傳輸安全性

IIS 裝載的 WCF 服務可以利用 HTTP 傳輸安全性 (例如,使用基本、摘要式與 Windows 整合式驗證的 HTTPS 和 HTTP 驗證配置),只要包含服務的 IIS 虛擬目錄支援這些設定即可。裝載端點繫結上的 HTTP 傳輸安全性設定必須符合包含該設定之 IIS 虛擬目錄上的傳輸安全性設定。

例如,設定為使用 HTTP 摘要式驗證的 WCF 端點必須駐留在同時設定為允許使用 HTTP 摘要式驗證的 IIS 虛擬目錄中。如果 IIS 設定與 WCF 端點設定組合不相符,會在服務啟動期間導致錯誤。

另請參閱

概念

在網際網路資訊服務中裝載
網際網路資訊服務裝載最佳做法

其他資源

Windows Server AppFabric 主控功能