HOW TO:將合約公開給 SOAP 和 Web 用戶端

根據預設,Windows Communication Foundation (WCF) 只會讓 SOAP 用戶端使用端點。在 HOW TO:建立基本 Web 樣式服務中,端點可提供給非 SOAP 用戶端使用。有時候您可能會想要讓兩者都有機會使用相同合約,也就是同時當做 Web 端點和 SOAP 端點。本主題說明如何執行此操作的範例。

若要定義服務合約

  1. 透過加上 ServiceContractAttributeWebInvokeAttributeWebGetAttribute 屬性標示的介面來定義服務合約。

    Bb412196.note(zh-tw,VS.90).gif注意:
    根據預設,WebInvokeAttribute 會將 POST 呼叫對應至作業。但是,您可以指定 "method=" 參數,以指定要對應至作業的方法。WebGetAttribute 不包含 "method=" 參數,而且只能將 GET 呼叫對應至服務作業。

  2. 實作服務合約。

若要裝載服務

  1. 建立 ServiceHost 物件。

  2. 針對 SOAP 端點新增包含 BasicHttpBindingServiceEndpoint

  3. 針對非 SOAP 端點新增包含 WebHttpBindingServiceEndpoint,並將 WebHttpBehavior 新增至端點。

  4. 呼叫 ServiceHost 執行個體上的 Open() 以開啟服務主機。

若要在 Internet Explorer 中呼叫對應至 GET 的服務作業

  1. 開啟 Internet Explorer 並輸入 "https://localhost:8000/EchoWithGet?s=Hello, world!",然後按 ENTER。URL 包含服務的基底位址 ("https://localhost:8000/")、端點的相對位址 ("")、要呼叫的服務作業 ("EchoWithGet")、問號,並於後面接續由連字號 (&) 分隔的具名參數清單。

若要透過程式碼呼叫 Web 端點上的服務作業

  1. using 區塊中建立 WebChannelFactory 的執行個體。
Bb412196.note(zh-tw,VS.90).gif注意:
using 區塊結尾上通道會自動呼叫 Close()。

  1. 建立通道並呼叫服務。

若要在 SOAP 端點上呼叫服務作業

  1. using 區塊中建立 ChannelFactory 的執行個體。

  2. 建立通道並呼叫服務。

若要關閉服務主機

  1. 關閉服務主機。

範例

以下是這個主題的完整程式碼清單。

編譯程式碼

編譯 Service.cs 時,請參考 System.ServiceModel.dll 和 System.ServiceModel.Web.dll。

請參閱

參考

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebServiceHost
ChannelFactory
WebHttpBehavior