為什么部署至Windows Services
在很多情況下,很少會(huì)把.Net Core項(xiàng)目部署至Windows服務(wù)中,特別是Asp.net Core就更少了。一般情況下谤民,Asp.net Core會(huì)部署至linux服務(wù)器,或者部署至Windows的IIS中疾宏。但也不排除會(huì)有Asp.net Core部署至Windows 服務(wù)中的情況张足,比如Windows服務(wù)器并沒(méi)有安裝IIS,或者Asp.net Core中存在一些定時(shí)任務(wù)坎藐,需要實(shí)時(shí)運(yùn)行为牍,等等一些情況。?
微軟解決方案
微軟也提供了.Net Core部署至Windows 服務(wù)的解決方案岩馍,應(yīng)該說(shuō)是Asp.net Core的解決方案碉咆。可以參看官方文檔https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1&tabs=aspnetcore2x蛀恩。但是官方的解決方案比較繁瑣疫铜,而且需要更改部分代碼。
什么是NSSM双谆?
官網(wǎng)http://www.nssm.cc/壳咕,下載地址http://www.nssm.cc/download
簡(jiǎn)單點(diǎn)理解就是NSSM可以把一些exe程序封裝成Windows服務(wù),然后exe程序就像服務(wù)一樣運(yùn)行顽馋。而且NSSM功能強(qiáng)大谓厘,運(yùn)行更簡(jiǎn)單,界面化傻瓜化處理方式趣避。
使用NSSM
后面的代碼演示以Asp.net Core 2.1作為演示,其他.Net Core方式一致新翎。
1程帕、確保.Net Core程序可以正常運(yùn)行
先把Asp.net Core發(fā)布住练,然后直接運(yùn)行dotnet命令,確保程序可以運(yùn)行并訪問(wèn)
2愁拭、使用NSSM安裝dotnet
下載NSSM讲逛,使用命令窗口至NSSM目錄中找到nssm.exe所在的目錄,然后運(yùn)行nssm install岭埠,然后會(huì)彈框盏混,選擇相應(yīng)的文件和文件夾。
Path:dotnet所在的目錄惜论,一般默認(rèn)是在C:\Program Files\dotnet\dotnet.exe许赃;
Startup directory:程序所在的目錄,就是最后程序dll所在的目錄馆类;
Arguments:程序dll的名稱混聊,一般是項(xiàng)目名加上.dll;
Service name:在此寫上服務(wù)的名稱即可乾巧。
然后點(diǎn)擊Install service按鈕就完成了部署句喜。
最后到Windows服務(wù)管理界面找到安裝的服務(wù)名稱,右鍵啟動(dòng)即可沟于,或者直接運(yùn)行nssm start 服務(wù)名稱咳胃,也可以運(yùn)行net start 服務(wù)名稱。這樣就可以非常簡(jiǎn)單的把.Net Core托管至Window服務(wù)中旷太。方便管理展懈、啟動(dòng)、停止等等泳秀。
NSSM更多的操作
命令窗口至NSSM目錄中找到nssm.exe所在的目錄标沪,然后運(yùn)行nssm,會(huì)看到NSSM的更多操作
比如對(duì)服務(wù)的增刪改查嗜傅,啟動(dòng)金句,停止,重啟等等吕嘀。都可以直接用NSSM直接操作违寞,一些常用的操作支持界面話(GUI)。
更多NSSM詳情可以參考:http://www.nssm.cc/usage
總結(jié)
1偶房、使用NSSM不僅可以把Asp.net Core部署到Windows 服務(wù)中趁曼,也可以把.Net Core甚至于其他exe程序封裝在服務(wù)中運(yùn)行。
2棕洋、為.Net Core提供了另一種部署在Windows的方式挡闰。