WCF學(xué)習(xí)筆記(2)——使用IIS承載WCF服務(wù)通過前面的筆記我們知道WCF服務(wù)是不能獨(dú)立存在,必須“寄宿”于其他的應(yīng)用程序中,承載WCF服務(wù)的應(yīng)用程序我們稱之為“宿主”。WCF的多種可選宿主,其中比較常見的就是承載于IIS服務(wù)中,在這里我們來學(xué)習(xí)如何使用IIS承載WCF服務(wù)。 在前面的筆記的示例中我們使用自己創(chuàng)建的控制臺應(yīng)用程序來承載WCF服務(wù),現(xiàn)在我們將使用IIS來作為這個(gè)示例程序的宿主。將IIS作為宿主只需要正確的配置好IIS就可以了,同時(shí)在IIS中運(yùn)行WCF服務(wù)不需要編寫任何承載代碼。 注意:
1.創(chuàng)建SVC文件和Web.config文件首先我們打開上一篇筆記中的的示例程序(點(diǎn)擊下載)解決方案,在Service項(xiàng)目下分別創(chuàng)建兩個(gè)文件:CalculatorService.svc和Web.config文件,如下:
2.添加System.ServiceModel程序集引用和更改程序生成目錄上一篇筆記中的示例代碼解決方案中Service項(xiàng)目并沒有引用System.ServiceModel程序集,所有在這里我們需要對其添加引用。同時(shí)由于我們的WCF服務(wù)部署到IIS上時(shí)就是作為一個(gè)Web應(yīng)用程序,而所有的Web應(yīng)用程序只會(huì)從根目錄下的bin子目錄中加載程序集,而我們Visual Studio 2010在默認(rèn)的情況下,編譯后程序集是存放在bin目錄下的Debug目錄或者Release目錄下的,所有我們需要將Service項(xiàng)目輸出更改到bin目錄去:
3.配置SVC文件每個(gè)WCF服務(wù)都有一個(gè)對應(yīng)的擴(kuò)展名為svc的文本文件,當(dāng)WCF服務(wù)的程序文件部署到IIS后,訪問WCF服務(wù)就是對相應(yīng)的svc文件進(jìn)行訪問。對于客戶端程序來說svc文件的地址就是服務(wù)終結(jié)點(diǎn)的地址,svc文件僅包含一個(gè)<%@ServiceHost %>指令和它一系列的可選屬性(點(diǎn)擊查看)。 現(xiàn)在我們打開之前創(chuàng)建的CalculatorService.svc文件,添加下面的指令: 1 //Service是命名空間,CalculatorService是提供服務(wù)的類名 2 <%@ServiceHost Service="Service.CalculatorService"%>
4.配置Web.config文件通過上一篇筆記我們知道:WCF服務(wù)的所有通信是通過該服務(wù)的終結(jié)點(diǎn)進(jìn)行的。而終結(jié)點(diǎn)又是由地址、綁定、契約三者構(gòu)成的。前面的svc文件已經(jīng)聲明了終結(jié)點(diǎn)的地址,現(xiàn)在我們通過配置Web.config文件來聲明WCF服務(wù)的綁定和契約。 手動(dòng)配置Web.config文件比較麻煩也容易出錯(cuò),我們可以通過使用Visual Studio 2010提供的配置工具類簡化這一過程,在Visual Studio 2010的菜單中選擇:工具——>WCF服務(wù)配置編輯器。 4.1 使用WCF服務(wù)配置編輯器打開創(chuàng)建的Web.config文件
4.2 使用WCF服務(wù)配置編輯器對Web.config文件進(jìn)行配置1.>創(chuàng)建服務(wù) 選擇 新建服務(wù)——>瀏覽——>選擇Service項(xiàng)目生成的Service.dll文件(具體配置操作這里不再贅述)
2.>創(chuàng)建服務(wù)行為,并將行為和對應(yīng)服務(wù)綁定
最后我們生成的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并設(shè)置ASP.NET對WCF服務(wù)目錄訪問權(quán)限
1.>在IIS中默認(rèn)網(wǎng)站中新建虛擬目錄,將別名命名為HelloWCF,并將其設(shè)置為應(yīng)用程序。
2.> 設(shè)置ASP.NET對WCF服務(wù)所在目錄訪問權(quán)限 打開解決方案所在目錄,選中Service項(xiàng)目所在的文件夾,點(diǎn)擊鼠標(biāo)右鍵,然后選擇“安全”選項(xiàng)——>點(diǎn)擊“添加”——>點(diǎn)擊“高級”——>點(diǎn)擊“立即查找”,選擇”ASP.NET Machine Account“(Windows XP 中),點(diǎn)擊“確定”,保存設(shè)置就可以了。 如果是在Windows 7系統(tǒng)中則添加“IIS_IUSRS”賬戶,如下: 提示:如果文件屬性選項(xiàng)卡中沒有“安全”選擇時(shí)打開“我的電腦”——>選擇“工具”選項(xiàng)——>選擇“文件夾選項(xiàng)”,將“使用簡單的文件共享”選項(xiàng),不選中。
6.訪問部署在IIS上的WCF服務(wù)部署完成后,調(diào)用的步驟和前面筆記是一樣的,我們也可以直接從瀏覽器來訪問svc文件查看WCF服務(wù)是否部署成功,我們在瀏覽器中輸入: http://localhost/HelloWCF/CalculatorService.svc,我們可以看到服務(wù)已經(jīng)成功啟動(dòng)了:
猛擊下載:示例源碼 參考資料&進(jìn)一步閱讀部署承載于 Internet 信息服務(wù)中的 WCF 服務(wù)
|
|
|