Topshelf 搭建 Windows 服務
阿新 • • 發佈:2021-07-18
C# Topshelf 搭建 Windows 服務
Topshelf 是一個用來部署基於.NET Framework 開發的服務的框架。簡化服務創建於部署過程,並且支援控制檯應用程式部署為服務。本文基於 .net core 控制檯應用程式部署為服務(.net Framework 可用)。
第一步:建立名為 TopshelfDemo 的控制檯應用程式
第二步:通過 Nuget 安裝 Topshelf 包
第三步:Toshelf 配置,程式碼並不多下面都有註釋
using System; using Topshelf; namespace TopshelfDemo { class Program { static void Main(string[] args) { try { // 配置和執行宿主服務 HostFactory.Run(x => //1 { x.Service<Service>(s => //2 { // 指定服務型別。這裡設定為 Service s.ConstructUsing(name => new Service()); //3 // 當服務啟動後執行什麼 s.WhenStarted(tc => tc.Start()); //4 // 當服務停止後執行什麼 s.WhenStopped(tc => tc.Stop()); //5 }); // 服務用本地系統賬號來執行 x.RunAsLocalSystem(); //6 // 服務描述資訊 x.SetDescription("我的專案服務"); //7 // 服務顯示名稱 x.SetDisplayName("MyProjectServiceShowName"); //8 // 服務名稱 x.SetServiceName("MyProjectService"); //9 }); } catch (Exception ex) { Console.WriteLine(ex); } } } public class Service { public void Start() { //To do something } public void Stop() { //To do something } } }
第四步:安裝服務
確保專案正常生成,然後通過管理員許可權開啟 cmd 命令視窗,找到專案所在的 Debug 目錄,輸入命令:TopshelfDemo.exe install或者雙擊檔案
如果是使用 .net core 的小夥伴你會發現 Debug下壓根沒有 TopshelfDemo.exe ,這不是扯淡呢麼,別急往下看。
由於 .net core 依賴 runtimes 所以我們需要釋出以下程式,並且選擇獨立專案就ok啦。
到這裡我出現了問題提示 TopshelfDemo.exe install 無法安裝,根據提示執行 ./TopshelfDemo.exe install
就安裝ok。
失敗提示資訊:
The ** service can only be installed as an administrator
解決方案:右擊**.exe檔案,屬性-》相容性-》勾選以管理員身份執行
也可以通過 sc delete MyProjectService 進行刪除
後面可以搭配Quartz
實現任務排程