1. 程式人生 > >將WCF寄宿到windows 服務中

將WCF寄宿到windows 服務中

最近在看關於WCF的東西,動手寫了個簡單的例子,一切都很順利,但我想把wcf寄宿到windows服務時耗費了時間。因不常做這類把應用程式寄宿到服務中,特此記錄下。

  1. 首先保證要寄宿的wcf服務可以正常執行
  2. 在解決方案中右鍵->新增 一個windows服務,我這裡取名為WcfServices,預設有一個Service1.cs的檔案,裡面有兩個重寫的方法,在OnStart中加入啟動服務的程式碼,如下圖
    這裡寫圖片描述
  3. 在Services1的設計頁面,右鍵->新增安裝程式,在WcfServices的目錄下會多出一個ProjectInstaller.cs檔案,可在這個檔案的設計頁面,設定serviceInstaller1和serviceProcessInstaller1的屬性,當讓也可以在程式碼中設定。
  4. 將wcf所需的配置加到app.config中
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
        <services>
            <service behaviorConfiguration
="Calculator" name="Services.Calculator">
<host> <baseAddresses> <add baseAddress="http://127.0.0.1:8888/Services/"/> </baseAddresses> </host> <endpoint address=""
binding="basicHttpBinding" contract="Contracts.ICalculator" />
</service> </services> <behaviors> <serviceBehaviors> <behavior name="Calculator"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
  1. windows 服務在vs中不能直接F5執行,我們編譯後,用命令將其加入到windows服務中。
  2. 用管理員身份執行cmd,轉到以下目錄這裡寫圖片描述
  3. 執行 installUtil E:\WcfService\WcfServices\bin\Debug\WcfServices.exe (這是要寄宿的服務路徑),這樣就可以在windows服務中看到加進去的服務了這裡寫圖片描述
  4. 直接啟動就ok了
  5. 測試一下,在ie下訪問http://127.0.0.1:8888/Services/(這個是wcf服務地址),如果看到下面的頁面就表示服務啟動成功了
    這裡寫圖片描述
    PS:如要解除安裝此服務,執行installUtil -u E:\WcfService\WcfServices\bin\Debug\WcfServices.exe 即可,執行完成後若要再安裝,需先關閉服務對話方塊,不然會報該服務被標記為刪除之類的錯誤