1. 程式人生 > 其它 >.Net Core——託管到windows服務

.Net Core——託管到windows服務

https://www.cnblogs.com/muchengqingxin/p/13190189.html

前言

netcore用了這麼久,雖然多數都是部署在centos系統,但也有部署在windows上的情況。最省力的部署方式是釋出後直接在釋出目錄開啟cmd,執行dotnet命令。雖然很省力,但是保留一個命令視窗,如果需要同時部署多個程式的話,就會保留多個視窗,而且還不能叉掉,對強迫症(我這種)來說簡直不能忍。。。。

所以更好的部署方式就是把程式以windows服務的方式部署,還可以設定自動啟動,節省一點運維成本。

怎麼做?

首先準備一個core程式,然後引入這個包:


再然後找到main入口:

public static void Main(string[] args)
{
    var host = CreateWebHostBuilder(args).Build();
    if (Debugger.IsAttached)
        host.Run();
    else
        host.RunAsService();
}

Debugger.IsAttached的意思是:程式是否以debug模式啟動,是的話返回true,否則false

這幾行程式碼的意思就是:如果是debug模式,就還保持視窗啟動,到了釋出環境就以服務方式啟動。

為什麼呢?因為只以服務啟動程式的話,debug啟動會報錯,這樣寫更方便。

就這?

當然不是。我們還需要在伺服器搞些動作。

當我們把釋出好的檔案在伺服器儲存好以後,管理員身份開啟cmd,執行這條命令:

sc create 你的服務名稱 binPath= "\"C:\program files\dotnet\dotnet.exe\" \"程式釋出目錄\"" DisplayName= "你的服務名稱" start= auto 

(重點:binPath、DisplayName、start這三個引數的等號後面必須帶一個空格)

然後就可以在服務列表裡看到它了:

如果上面的操作都沒問題,但服務就是跑不起來,有可能是SDK版本不對,下對版本就可以了。

最後貼上官方文件地址:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1&tabs=visual-studio

轉https://www.cnblogs.com/muchengqingxin/p/13190189.html