WCF服務程序本身不能運行,需要通過其他的宿主程序進行托管才能調用WCF服務功能,常見的宿主程序有IIS,WAS,Windows服務,當然在學習WCF技術的時候一般使用控制臺應用程序或WinForm程序進行托管。本文將詳細介紹如何使用IIS8托管WCF服務程序以及解決可能會碰到的一些問題。步驟比較多,還需耐心看完!
1.本機器是Win8操作系統,默認沒有安裝IIS。安裝IIS8很簡單,具體步驟是:控制面板→程序和功能→啟用或關閉Windows功能,勾選Internet信息服務節點下的部分功能,
如圖所示:
2.安裝完畢,重啟系統后,在瀏覽器中輸入?http://localhost/,即可看見IIS8界面,表示安裝成功,如圖:
3.啟用WCF服務中的HTTP激活功能,具體步驟是:控制面板→程序和功能→啟用或關閉Windows功能,勾選“.Net Framework 4.5 高級服務”節點下的部分功能,
如圖所示:
?
1.新建解決方案“IISHostWCF”,添加“WCF服務類庫”項目,命名為“WCFService”,如圖
該WCF服務的功能很簡單,根據參數Id獲取相應的價格,代碼如下:
1)服務接口代碼


using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ServiceModel;namespace WCFService {[ServiceContract]public interface IGetPrice{[OperationContract]string GetPriceByProductId(int id);} }
2)實現接口的服務類代碼


using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace WCFService {public class GetPrice : IGetPrice{public string GetPriceByProductId(int id){string price = "0.00";switch (id){case 1:price = "12.34";break;case 2:price = "45.60";break;case 3:price = "78.99";break;default:price = "100.00";break;}return price;}} }
2.在解決方案中,添加→新建網站,選擇“WCF服務”,命名為“WCFWebSite”,如圖
1)把新生成的IService.cs和Service.cs文件刪除
2)添加在第一個步驟里新建的WCF服務類庫,WCFService.dll
3).修改Service.svc文件
4)使用“WCF服務配置編輯器”編輯web.config文件
web.config代碼如下:


<?xml version="1.0" encoding="utf-8"?> <configuration><appSettings><add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /></appSettings><system.web><compilation debug="false" targetFramework="4.5" /><httpRuntime targetFramework="4.5"/></system.web><system.serviceModel><services><service behaviorConfiguration="WCFServiceBehavior" name="WCFService.GetPrice"><endpoint address="basic" binding="basicHttpBinding" bindingConfiguration=""name="basicEndPoint" contract="WCFService.IGetPrice" /><endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""name="mexEndPoint" contract="IMetadataExchange" /><host><baseAddresses><add baseAddress="http://localhost:8002/" /></baseAddresses></host></service></services><behaviors><serviceBehaviors><behavior name="WCFServiceBehavior"><serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /><serviceDebug includeExceptionDetailInFaults="false" /></behavior></serviceBehaviors></behaviors><protocolMapping><add binding="basicHttpsBinding" scheme="https" /></protocolMapping> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /></system.serviceModel><system.webServer><modules runAllManagedModulesForAllRequests="true"/><!--若要在調試過程中瀏覽 Web 應用程序根目錄,請將下面的值設置為 True。在部署之前將該值設置為 False 可避免泄露 Web 應用程序文件夾信息。--><directoryBrowse enabled="true"/></system.webServer></configuration>
5)發布“WCF服務網站”
1.打開IIS管理器,添加網站,如圖
2.添加完網站后,右鍵菜單→管理網站→瀏覽,彈出頁面,選擇瀏覽“Service.svc”文件,
打開后,發現會報錯:
經過查找資料,原來是IIS8默認沒有添加處理svc文件的處理程序,需手動添加:
1)添加MIME類型
文件擴展名:.svc;MIME類型:application/octet-stream。
2)添加處理程序映射
請求路徑:?*.svc;
類型:System.ServiceModel.Activation.HttpHandler;
名稱:svc-Integrated
添加完畢后,重新啟動網站,再次瀏覽即可成功:
1.通過VS自帶的WCF測試工具
打開“VS2012開發人員命令提示”工具,輸入“wcftestclient”,即可打開“WCF測試客戶端”:
添加WCF服務測試地址:http://localhost:8001/Service.svc/mex
測試結果如下:
2.新建控制臺客戶端來測試WCF服務,添加服務引用
以下是簡單的測試代碼:


using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace WCFClient {class Program{static void Main(string[] args){WCFGetPrice.GetPriceClient proxy = new WCFGetPrice.GetPriceClient("basicEndPoint");Console.WriteLine(proxy.GetPriceByProductId(3));Console.ReadKey();}} }
結果如下:
?
至此使用IIS托管WCF服務應用程序詳細步驟完畢。
好困啊~~~
?
?