HOW TO:將合約公開給 SOAP 和 Web 用戶端
根據預設,Windows Communication Foundation (WCF) 只會讓 SOAP 用戶端使用端點。在 HOW TO:建立基本 Web 樣式服務中,端點可提供給非 SOAP 用戶端使用。有時候您可能會想要讓兩者都有機會使用相同合約,也就是同時當做 Web 端點和 SOAP 端點。本主題說明如何執行此操作的範例。
若要定義服務合約
透過加上 ServiceContractAttribute、WebInvokeAttribute 和 WebGetAttribute 屬性標示的介面來定義服務合約。
注意: 根據預設,WebInvokeAttribute 會將 POST 呼叫對應至作業。但是,您可以指定 "method=" 參數,以指定要對應至作業的方法。WebGetAttribute 不包含 "method=" 參數,而且只能將 GET 呼叫對應至服務作業。 實作服務合約。
若要裝載服務
建立 ServiceHost 物件。
針對 SOAP 端點新增包含 BasicHttpBinding 的 ServiceEndpoint。
針對非 SOAP 端點新增包含 WebHttpBinding 的 ServiceEndpoint,並將 WebHttpBehavior 新增至端點。
呼叫 ServiceHost 執行個體上的 Open() 以開啟服務主機。
若要在 Internet Explorer 中呼叫對應至 GET 的服務作業
- 開啟 Internet Explorer 並輸入 "https://localhost:8000/EchoWithGet?s=Hello, world!",然後按 ENTER。URL 包含服務的基底位址 ("https://localhost:8000/")、端點的相對位址 ("")、要呼叫的服務作業 ("EchoWithGet")、問號,並於後面接續由連字號 (&) 分隔的具名參數清單。
若要透過程式碼呼叫 Web 端點上的服務作業
- 在
using
區塊中建立 WebChannelFactory 的執行個體。
注意: |
---|
using 區塊結尾上通道會自動呼叫 Close()。
|
- 建立通道並呼叫服務。
若要在 SOAP 端點上呼叫服務作業
在
using
區塊中建立 ChannelFactory 的執行個體。建立通道並呼叫服務。
若要關閉服務主機
- 關閉服務主機。
範例
以下是這個主題的完整程式碼清單。
編譯程式碼
編譯 Service.cs 時,請參考 System.ServiceModel.dll 和 System.ServiceModel.Web.dll。
請參閱
參考
WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebServiceHost
ChannelFactory
WebHttpBehavior