WCF學習筆記(2)——使用IIS承載WCF服務

來源:互聯網
上載者:User
文章目錄
  • 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.svcWeb.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 

本文著作權歸作者和部落格園共有,轉載請註明出處。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.