本文轉自:http://www.cnblogs.com/poissonnotes/archive/2010/08/28/1811141.html
上一篇中,我們建立了一個簡單的WCF服務,在測試的時候,我們使用VS2008內建的WCFSVCHost(WCF服務主機)發布WCF服務,以便進行測試。這種VS2008內建的WCFSVCHost只適用於開發人員測試的使用,能進行WCF服務部署。這一篇文章中我們來看一下如何在IIS中部發布我們上一篇中做好的WCF服務。
第一步:開啟我們上一篇文章中建立的WCF服務項目。
圖《1》
第二步:建立WCF服務網站。在解決方案上右擊,選擇“添加”->“建立網站”,開啟建立網站對話方塊。在“添加新網站”對話方塊中,我們選擇“WCF服務”,並把網站的名子命名為“BookServiceHost”
圖《2》
建立起來的新的WCF服務網站的結果如下,其中在App_Code檔案中自動為我們產生兩個類檔案:IService.cs和Service.cs。這兩個檔案對我們來說沒有用,我們刪掉。
圖《3》
第三步:在剛剛建立的WCF服務網站上添加對WCF服務庫項目--Services項目的引用。
圖《4》
第四步:配置Service.svc檔案。
雙擊Service.svc檔案,我們可以看到它的聲明指示如下:
<%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %>
由於在第二步中我們已經把IService.cs和Service.cs兩個檔案已經刪除了,所以這裡的聲明指示內容修改一下,讓這個Service.svc檔案的後台代碼指向我們上次建立的WCF服務庫項目--Services項目中的類,改後的代碼如下:
<%@ ServiceHost Language="C#" Debug="true" Service="Services.BookService"%>
我們把其中的Service屬性指定為Services命名空間下的BookService類,並把CodeBehind屬性刪去了。
第五步:配置此WCF服務網站與WCF服務庫項目之間的類的對應。
雖然在第三步中我們添加了對Services項目的引用,並且在第四步中修改了Service.svc的類的對應,但此時我們的WCF服務網站並不能把WCF服務庫中的服務和終結點發布出來,還需要我們對web.config進行一系列的配置工作。
在web.config上右擊選擇“編輯WCF配置”
《圖5》
在彈出的服務配置視窗中,把Service服務指定到WCF服務庫的Services.dll中的Services.BookService服務類上。
《圖6》
再把其中的一個對外終結點的Contract設為WCF服務庫的Services.dll中的Services.IBookService服務契約上。
《圖7》
第六步:試著再添加一個通訊的終結點。
這一步是可選的,我們再為此WCF服務網站添加一個終結點,A=basic B=basicHttpBinding C=Services.IBookService
《圖8》
下面我們將試著使用不同的終結點與WCF服務進行互動,查看運行情況。
當我們使用IIS5或IIS6發布WCF服務的時候一般只建立Http綁定的終結點,而不能建立使用TCP綁定、管道綁定的終結點。
第七步:測試回合WCF服務網站。
在Service.svc上右擊,選擇“在瀏覽器中查看”,在IE中運行此服務。
《圖9》
由此我們看到我們可以在ASP.NET Development Server中發布我們的WCF服務了。
第八步:在IIS布署此WCF服務網站。
在IIS建立Web應用程,指向我們的WCF服務網站所在的目錄。然後在IIS運行我們發布的WCF服務
《圖10》
從中我們看到發布的網站中不再包含有連接埠號碼。
到此為至我們在IIS中發布WCF服務成功。
下面我們在WCF測試用戶端調用我們剛剛在IIS中發布的WCF服務
第九點:在VS2008命令視窗中輸入以下代碼運行WCF測試用戶端
x:\...\wcftestclient http://localhost/TestWCFService/Service.svc
彈出測試視窗如下:
《圖11》
我們可以看到發布的服務中有兩個終結點:這兩個終結點的傳輸方式不同,但提供的方法是相同的。
我們通過第一個終結點的AddBooks()方法添加三個對象。
《圖12》
再通過第二個終結點的GetAllBooks()方法取得所有對象的資訊。
《圖13》
運行完全沒問題。