文章目錄
- 3.配置SVC檔案
- 4.配置Web.config檔案
- 5.部署到IIS並設定ASP.NET對WCF服務類別目錄存取權限
- 6.訪問部署在IIS上的WCF服務
通過前面的筆記我們知道WCF服務是不能獨立存在,必須“寄宿”於其他的應用程式中,承載WCF服務的應用程式我們稱之為“宿主”。WCF的多種可選宿主,其中比較常見的就是承載於IIS服務中,在這裡我們來學習如何使用IIS承載WCF服務。
在前面的筆記的樣本中我們使用自己建立的控制台應用程式來承載WCF服務,現在我們將使用IIS來作為這個樣本程式的宿主。將IIS作為宿主只需要正確的配置好IIS就可以了,同時在IIS中運行WCF服務不需要編寫任何承載代碼。
注意:
使用IIS( IIS 5.1 和 IIS 6.0)作為WCF服務的宿主有一個限制:只可以將 IIS 宿主與 HTTP 傳輸協議一起使用。
1.建立SVC檔案和Web.config檔案
首先我們開啟上一篇筆記中的的樣本程式(點擊下載)解決方案,在Service項目下分別建立兩個檔案:CalculatorService.svc和Web.config檔案,如下:
2.添加System.ServiceModel程式集引用和更改程式組建目錄
上一篇筆記中的範例程式碼解決方案中Service項目並沒有引用System.ServiceModel程式集,所有在這裡我們需要對其添加引用。同時由於我們的WCF服務部署到IIS上時就是作為一個Web應用程式,而所有的Web應用程式只會從根目錄下的bin子目錄中載入程式集,而我們Visual Studio 2010在預設的情況下,編譯後程式集是存放在bin目錄下的Debug目錄或者Release目錄下的,所有我們需要將Service項目輸出更改到bin目錄去:
3.配置SVC檔案
每個WCF服務都有一個對應的副檔名為svc的文字檔,當WCF服務的程式檔案部署到IIS後,訪問WCF服務就是對相應的svc檔案進行訪問。對於用戶端程式來說svc檔案的地址就是服務端點的地址,svc檔案僅包含一個<%@ServiceHost %>指令和它一系列的可選屬性(點擊查看)。
現在我們開啟之前建立的CalculatorService.svc檔案,添加下面的指令:
1 //Service是命名空間,CalculatorService是提供服務的類名2 <%@ServiceHost Service="Service.CalculatorService"%>
4.配置Web.config檔案
通過上一篇筆記我們知道:WCF服務的所有通訊是通過該服務的終結點進行的。而終結點又是由地址、綁定、契約三者構成的。前面的svc檔案已經聲明了終結點的地址,現在我們通過配置Web.config檔案來聲明WCF服務的綁定和契約。
手動設定Web.config檔案比較麻煩也容易出錯,我們可以通過使用Visual Studio 2010提供的組態工具類簡化這一過程,在Visual Studio 2010的菜單中選擇:工具——>WCF服務配置編輯器。
4.1 使用WCF服務配置編輯器開啟建立的Web.config檔案
4.2 使用WCF服務配置編輯器對Web.config檔案進行配置
1.>建立服務
選擇 建立服務——>瀏覽——>選擇Service項目產生的Service.dll檔案(具體配置操作這裡不再贅述)
2.>建立服務行為,並將行為和對應服務綁定
最後我們產生的Web.config設定檔如下所示:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <system.serviceModel> 4 <behaviors> 5 <serviceBehaviors> 6 <behavior name="metadataBehavior"> 7 <serviceMetadata httpGetEnabled="true" /> 8 </behavior> 9 </serviceBehaviors>10 </behaviors>11 <services>12 <service behaviorConfiguration="metadataBehavior" name="Service.CalculatorService">13 <endpoint address="" binding="wsHttpBinding" bindingConfiguration=""14 contract="ContractService.ICalculator" />15 </service>16 </services>17 </system.serviceModel>18 </configuration>
5.部署到IIS並設定ASP.NET對WCF服務類別目錄存取權限
1.>在IIS中預設網站中建立虛擬目錄,將別名命名為HelloWCF,並將其設定為應用程式。
2.> 設定ASP.NET對WCF服務所在目錄存取權限
開啟解決方案所在目錄,選中Service項目所在的檔案夾,點擊滑鼠右鍵,然後選擇“安全”選項——>點擊“添加”——>點擊“進階”——>點擊“立即尋找”,選擇”ASP.NET Machine Account“(Windows XP 中),點擊“確定”,儲存設定就可以了。
如果是在Windows 7系統中則添加“IIS_IUSRS”賬戶,如下:
提示:如果檔案屬性選項卡中沒有“安全”選擇時
開啟“我的電腦”——>選擇“工具”選項——>選擇“檔案夾選項”,將“使用簡單的檔案分享權限設定”選項,不選中。
6.訪問部署在IIS上的WCF服務
部署完成後,調用的步驟和前面筆記是一樣的,我們也可以直接從瀏覽器來訪問svc檔案查看WCF服務是否部署成功,我們在瀏覽器中輸入:
http://localhost/HelloWCF/CalculatorService.svc,我們可以看到服務已經成功啟動了:
猛擊下載:樣本源碼
參考資料&進一步閱讀
承載服務
Internet 資訊服務承載最佳實務
部署承載於 Internet 資訊服務中的 WCF 服務
ServiceHost指令
《WCF全面解析》
作者:晴天豬
出處:http://www.cnblogs.com/IPrograming
本文著作權歸作者和部落格園共有,轉載請註明出處。