將WCF寄宿到windows 服務中
阿新 • • 發佈:2019-01-06
最近在看關於WCF的東西,動手寫了個簡單的例子,一切都很順利,但我想把wcf寄宿到windows服務時耗費了時間。因不常做這類把應用程式寄宿到服務中,特此記錄下。
- 首先保證要寄宿的wcf服務可以正常執行
- 在解決方案中右鍵->新增 一個windows服務,我這裡取名為WcfServices,預設有一個Service1.cs的檔案,裡面有兩個重寫的方法,在OnStart中加入啟動服務的程式碼,如下圖
- 在Services1的設計頁面,右鍵->新增安裝程式,在WcfServices的目錄下會多出一個ProjectInstaller.cs檔案,可在這個檔案的設計頁面,設定serviceInstaller1和serviceProcessInstaller1的屬性,當讓也可以在程式碼中設定。
- 將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>
- windows 服務在vs中不能直接F5執行,我們編譯後,用命令將其加入到windows服務中。
- 用管理員身份執行cmd,轉到以下目錄
- 執行 installUtil E:\WcfService\WcfServices\bin\Debug\WcfServices.exe (這是要寄宿的服務路徑),這樣就可以在windows服務中看到加進去的服務了
- 直接啟動就ok了
- 測試一下,在ie下訪問http://127.0.0.1:8888/Services/(這個是wcf服務地址),如果看到下面的頁面就表示服務啟動成功了
PS:如要解除安裝此服務,執行installUtil -u E:\WcfService\WcfServices\bin\Debug\WcfServices.exe 即可,執行完成後若要再安裝,需先關閉服務對話方塊,不然會報該服務被標記為刪除之類的錯誤