使用 WCF LOB 配接器 SDK 在 IIS 中裝載配接器
本節包含如何在 Internet Information Services (IIS) 中使用 Microsoft Windows Communication Foundation (WCF) 企業營運 (LOB) 配接器 SDK 來裝載配接器的相關資訊。 如需其他裝載選項的詳細資訊,請參閱 裝載服務。
使用 IIS 和 ASP.NET
您可以使用 IIS 搭配啟用 ASP.NET 來發佈使用 WCF LOB 配接器 SDK 建立的配接器。 若要裝載 WCF LOB 配接器 SDK 所建立的配接器,您可以設定 Internet Information Services (IIS) 來發佈 WCF 服務。 接下來,請考慮如何使用 WCF 配接器與 ASP.NET。
在 IIS 中裝載 WCF 服務時,有兩種可用的裝載模式: 並存 和 ASP.NET 相容性模式。 預設裝載模式會並存。 並存模式與其他 WCF 主控解決方案的行為一致。 因此,裝載于 IIS 的 WCF 服務的行為與主控台應用程式中裝載的 WCF 服務相同。 不過,這可能會不想要,因為 Web 開發人員可能會預期行為類似 ASP.NET。 例如,在並存模式中,WCF 不會遵守 web.config 組態專案中指定的 <system.web> <authorization>
任何 URL 型授權規則。
ASP.NET 相容性模式可讓 WCF 服務使用 ASP.NET 的所有功能,且行為與 ASPX 頁面相同;不過,建立 WCF 配接器以啟用此功能時,您必須採取其他步驟。 如需詳細資訊,請參閱:
使用 WCF 配接器服務開發精靈
使用 WCF LOB 配接器服務開發精靈,自動建立 Web 專案,以在 Internet Information Services (IIS) 中裝載介面卡。 然後,用戶端可以使用 Windows Communication Framework (WCF) 或 Web 服務來取用裝載的介面卡。
將配接器發佈為 IIS 中裝載的 WCF 服務
開啟 Visual Studio。 在 [ 檔案] 功能表上,選取 [ 新增],然後選取 [網站]。
在 [範本] 中,選取 [Visual C#],然後選取 [WCF 配接器服務]。
輸入資料夾以儲存方案,然後選取 [ 確定]。 WCF 配接器服務開發精靈隨即啟動。
在 [簡介] 頁面上,按一下 [下一步] 。
在 [ 選擇作業 ] 頁面上,指定要用於此託管服務的系結、合約和作業。
在 [ 選取系結 ] 清單中,選取要使用的配接器系結,然後按一下 [ 設定]。 這會顯示 [ 設定配接器 ] 對話方塊。 提供叫用配接器及擷取作業中繼資料所需的值。
在 [ 安全性 ] 索引標籤上,選取將用戶端認證傳遞至配接器時要使用的 用戶端認證類型 。
認證類型 描述 None 用戶端不需要出示認證。 Windows 用戶端將使用 Windows 認證。 使用者名稱 用戶端會提供使用者名稱和密碼。 [MSSQLSERVER 的通訊協定內容] 用戶端將會使用 X.509 憑證進行驗證。 如果設定此值,請按一下 [用戶端憑證] 區域中的 [流覽],然後選取要使用的憑證。 在 [ URI 屬性] 索引 標籤上,指定配接器所需的 URI 參數。 此索引標籤中顯示的專案會根據配接器類別中
ConnectionUri Properties
公開的屬性而有所不同。在 [ 系結屬性] 索引 標籤上,為配接器所需的系結屬性指定值。 [一般] 區段包含一般設定,例如逾時值。 其他屬性會根據類別
AdapterBinding
中公開的自訂屬性列出。
指定組態值之後,按一下 [ 連線]。
從 [ 選取合約類型 ] 清單中,選取要使用的合約。 這會填入 [選取類別 樹狀目錄] 控制項,其中包含可從此配接器取得的類別和作業清單。 如果配接器透過
MetadataRetrievalClient
類別實作搜尋功能,您可以在 [ 類別中的搜尋 ] 欄位中輸入搜尋字詞,只傳回包含搜尋字詞的類別和作業。注意
只有輸出作業可供選取。
從 [ 可用的類別和作業 ] 方塊中,選取要新增的專案,然後按一下 [ 新增]。 新增所需專案之後,請按 [ 下一步]。
在 [ 設定服務和端點行為 ] 頁面上,設定此配接器所需的行為。
[服務行為組態] 區段包含控制服務行為的專案。 執行精靈之後,您可以編輯 web.config 檔案來修改選取的服務行為。
屬性 Description EnableMetadataExchange 將此值設定為 True 可讓服務中繼資料發佈至用戶端要求。 您也可以修改 <web.config 中的 serviceMetadata HTTPGetEnabled=「」> 來設定此設定。預設值為False IncludeExceptionDetailsinFault 將此值設定為 True 會導致 Managed 例外狀況資訊在 SOAP 錯誤中傳回給用戶端。 您也可以使用web.config 中的 usingincludeExceptionDetailInFaults=「」> 來修改 < serviceDebug 來設定此設定。預設值為False。 名稱 服務行為組態的名稱。 UseServiceCertificate 這個值會判斷服務是否會使用 X.509 憑證向用戶端進程驗證本身。 預設值為 True。 FindValue 此值用來搜尋憑證存放區中的特定 X.509 憑證。 您也可以藉由修改 < web.config Note中的serviceCredentials findValue=「」> 來設定:只有當UseServiceCertificate設定為True時,才指定此屬性的值。 StoreLocation 這個值會指定要搜尋指定憑證的系統存放區位置。 您也可以修改 <web.config 中的 serviceCredentials storeLocation=「」> 來設定此設定。注意:只有在UseServiceCertificate設定為True時,才指定此屬性的值。 StoreName 這個值會指定要搜尋指定之憑證的特定系統存放區。 這也可以藉由修改 < web.config Note中的serviceCredentials storeName=「」> 來設定:只有當UseServiceCertificate設定為True時,才指定此屬性的值。 X509FindType 要與稍早指定的 FindValue 搭配使用的搜尋類型,以便尋找要使用的特定憑證。 您也可以修改 < web.config附注中的serviceCredentials x509FindType=「」> 來設定:只有在UseServiceCertificate設定為True時,才指定此屬性的值。 [ 端點行為組態 ] 區段會控制端點行為。
屬性 描述 名稱 端點行為的名稱 AuthenticationType 這個值會指示配接器在何處取得傳入檔的用戶端認證。 若要讓用戶端指定要向服務驗證的用戶端憑證,請將此設定為 ClientCredentialUsernamePassword。 若要讓用戶端將使用者名稱和密碼指定為 HTTP 標頭的一部分,請將此設定為 HTTPUsernamePassword。 若要讓用戶端透過 ClientCredential 介面指定認證,請將此設定為 Auto。如果失敗,用戶端可以傳遞認證做為 HTTP 標頭的一部分。
您也可以在 web.config 中修改 <endpointBehavior adapterSecurityBridgeType> 來設定此值。預設值為Auto。UsernameHeader 這會指定將用來將使用者名稱傳遞至服務的標頭名稱。 For more information about HTTP headers, see “Support for Custom HTTP and SOAP headers” at https://go.microsoft.com/fwlink/?LinkId=106692
您也可以在 web.config 中修改 <endpointBehavior usernameHttpHeader> 來設定此值。注意:如果AuthenticationType設定為HTTPUserNamePassword,您必須指定此屬性的值。 如果設定為 [自動],則此屬性是選擇性的。PasswordHeader 這會指定將用來將使用者密碼傳遞至服務的標頭名稱。 For more information about HTTP headers, see “Support for Custom HTTP and SOAP Headers” at https://go.microsoft.com/fwlink/?LinkId=106692
您也可以在 web.config 中修改 <endpointBehavior passwordHttpHeader< 來設定此值。注意:如果AuthenticationType設定為HTTPUserNamePassword,您必須指定此屬性的值。 如果設定為 [自動],則此屬性是選擇性的。設定所需的行為之後,按 [ 下一步 ] 繼續。
在 [ 設定服務端點系結和位址] 頁面上,您可以設定合約的位址和系結屬性。 在 [ 選取要設定的合約 ] 清單中選取合約,然後在 [ 設定合約的位址和系結 ] 對話方塊中輸入所需的值。
選取 [系結屬性] 底下的 [BindingConfiguration ] 專案。 精靈僅支援基本 HTTP 系結,因此系結組態欄位會自動設定為 System.ServiceModel.Configuration.BasicHttpBindingElement。 若要變更此系結的組態屬性,請按一下省略號 ... 按鈕。 若要使用安全通道,您必須一律將 Mode 屬性設定為 Transport。 這是預設值。
選取 [EndpointName],然後輸入所需的端點名稱。
若要套用變更,請按一下 [ 套用]。
若要繼續進行,請按 [下一步] 。 [摘要] 頁面會列出已選取之配接器作業的樹狀結構。
檢閱摘要,然後按一下 [ 完成]。
精靈會建立 Web 專案,並新增下列檔案。
檔案 描述 .svc 參考 WCF Proxy 的服務檔案。 .cs 實作 WCF Proxy。 web.config 包含 < 系統的端點、 <系結> 和 <行為> 專案 <。ServiceModel> 發佈 WCF 服務專案。
以滑鼠右鍵按一下方案總管中的專案,然後按一下 [發佈]。
在 [ 發佈網站] 對話方塊中,指定 WCF 服務的目標 URL。
選取 [允許更新此先行編譯的網站]。
選取 [使用固定命名和單一頁面元件]。
選取 [在先行編譯元件上啟用強式命名],然後指定要使用的簽署金鑰。
若要發佈網站,請按一下 [ 確定]。
確認已成功發佈服務。
啟動 IIS 管理主控台。 按一下 [開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services]。
流覽至您發佈服務的節點。 如果服務發佈為 http://localhost/myservice ,請流覽至Internet Information Services>電腦名稱稱>網站>預設網站>myservice。
在右窗格中,以滑鼠右鍵按一下 .svc 檔案,然後按一下 [ 流覽]。 網頁會顯示服務的相關資訊。 您現在可以使用來自用戶端應用程式的 WCF 或 Web 服務呼叫來取用此服務。
安全性
當配接器裝載于服務內時,來自用戶端應用程式的呼叫會使用配接器安全性橋接器將用戶端認證傳遞至配接器。
當 WCF 用戶端將驗證傳送至 WCF 服務時,服務通常會取用驗證。 不過,在介面卡的情況下,概念是擷取驗證資訊以搭配基礎 LOB 系統使用。 這會透過配接器安全性橋接器實作,此橋接器會呈現為端點行為。 身為配接器開發人員,不需要實作才能利用這項功能;不過,部署配接器時,您必須考慮用戶端如何將認證提供給服務。
如果您使用訊息層級安全性,配接器安全性橋接器可以擷取用戶端應用程式在任何系結上傳送的 ClientCredentials。 如果您使用基本 HTTP 系結,您可以改為選取使用自訂標頭來傳遞使用者名稱和密碼資訊。 建議使用 WCF 提供的 ClientCredential 類別來傳遞認證,不過許多 Web 服務用戶端應用程式必須使用自訂標頭來傳遞認證。
以下是配接器在用戶端應用程式提供的 ClientCredentials 中尋找認證的範例組態。 如果找不到 ,配接器就會在指定的 HTTP 要求標頭中尋找。
<endpointBehaviors>
<behavior name="customEndpointBehavior">
<endpointBehavior usernameHttpHeader="UNHdr" passwordHttpHeader="PWHdr"
adapterSecurityBridgeType="Auto" />
</behavior>
</endpointBehaviors>