前言
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.uj5u.com/net/63159.html
標籤:.NET Core
