.Net Core——託管到windows服務
阿新 • • 發佈:2022-01-06
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://www.cnblogs.com/muchengqingxin/p/13190189.html