1. 程式人生 > 其它 >Topshelf 搭建 Windows 服務

Topshelf 搭建 Windows 服務

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實現任務排程