.net core部署到windows服務(wù)上的完整步驟
前言
Net core 項(xiàng)目部門(mén)在Windows有很多種方式,大致有以下幾種,
- dotnet 命令,
- iis(windowshosts),
- 一些開(kāi)源的應(yīng)用容器(docker )
- 基于一些exe 程序,微軟官網(wǎng)上案例
- Nssm 搭建windows服務(wù)
其中優(yōu)劣對(duì)比在這不進(jìn)行累述。我今天是把它搭建到windows服務(wù)上的,這種方式對(duì)于我們現(xiàn)有dotnet來(lái)說(shuō)相對(duì)美觀(一個(gè)黑框框,一個(gè)看不到),電腦重啟可以自動(dòng)重啟。
1.實(shí)現(xiàn)
1.1.下載nssm
官網(wǎng)http://www.nssm.cc/,下載地址http://www.nssm.cc/download
1.2.搭建windows 服務(wù)
找到文件夾下建立的Install.bat 點(diǎn)擊運(yùn)行彈出操作窗體。
Install.bat內(nèi)容:
%~d0 cd %~dp0 nssm install NPSWebCoreService PAUSE
Path:選擇系統(tǒng)運(yùn)行bat----C:\Nps\CoreWeb\1run.bat
ps:因?yàn)槲覀兿到y(tǒng)中要特殊處理所以直接執(zhí)行了bat。此內(nèi)容正常是填寫(xiě)C:\Program Files\dotnet\dotnet.exe. 因?yàn)橐獔?zhí)行dotnet命令,我這些操作實(shí)在bat中執(zhí)行的。
Startup directory:bat 所在目錄不用改變;
ps:發(fā)布項(xiàng)目文件夾的地址。
Arguments:為空;
ps:項(xiàng)目運(yùn)行dll:
Service name:我寫(xiě)在install.bat 批處理里面了,不要改變,因?yàn)榇a中重啟服務(wù)我這是寫(xiě)死的。。
ps:創(chuàng)建線(xiàn)管名稱(chēng)即可,即windows 服務(wù)名稱(chēng)。
然后點(diǎn)擊Install service按鈕就完成了部署。
注:紅色字體為是一般處理方式,非紅色是我們系統(tǒng)中處理的方式
1.2.3 啟動(dòng)服務(wù)
讓后輸入網(wǎng)站就可以訪(fǎng)問(wèn)了
3. Nssm
3.1.輸入nssm 了解其命令行
3.2.官網(wǎng)http://www.nssm.cc/usage
4. 針對(duì)與咱們系統(tǒng)的問(wèn)題的處理方案
4.1. 日志問(wèn)題,nssm 中path 文件運(yùn)行bat 不要運(yùn)行dotnet.exe. Log4net 配置問(wèn)題。
4.2. Office 轉(zhuǎn)換pdf 問(wèn)題,windows servers 2008 服務(wù)器缺少com組件缺少窗口,我在程序中增加了相關(guān)代碼,如果沒(méi)有權(quán)限請(qǐng)手動(dòng)創(chuàng)建(服務(wù)器2008 r2 ,2016都能創(chuàng)建)
System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel 不能訪(fǎng)問(wèn)文件“D:\Benz\Daimler\Benz.Win\LSHBizPlanFigure.xls”。 可能的原因有:
? 文件名稱(chēng)或路徑不存在。
? 文件正被其他程序使用。
? 您正要保存的工作簿與當(dāng)前打開(kāi)的工作簿同名。
此問(wèn)題的出現(xiàn) 我十分不解。
解決方案 也十分疑惑
This solution is ...
?Windows 2008 Server x64
Please make this folder.C:\Windows\SysWOW64\config\systemprofile\Desktop
?Windows 2008 Server x86
Please make this folder.
C:\Windows\System32\config\systemprofile\Desktop
...instead of dcomcnfg.exe.
This operation took away office automation problems in my system.
A Desktop folder seems to be necessary in the systemprofile folder to open file by Excel.
It disappears from Windows2008, Windows2003 had the folder,
and I think it cause this error.
即在C:\Windows\System32\config\systemprofile和C:\Windows\SysWOW64\config\systemprofile目錄下創(chuàng)建名為Desktop目錄即可解決問(wèn)題
該方法確實(shí)解決了我的問(wèn)題
4.3.數(shù)據(jù)庫(kù)備份重啟服務(wù)問(wèn)題,改為重啟windows服務(wù),所以請(qǐng)用上面的install.bat運(yùn)行不要,改變Service name。
重啟服務(wù)代碼:
try { ServiceController service = new ServiceController("NPSWebCoreService"); if (service.Status == ServiceControllerStatus.Running) { service.Stop(); service.WaitForStatus(ServiceControllerStatus.Stopped); } service.Start(); service.WaitForStatus(ServiceControllerStatus.Running); } catch (Exception){}
4.4.netcoreweb要基于mysql 服務(wù)問(wèn)題,擔(dān)心再啟服務(wù)器的時(shí)候,mysql和windows 服務(wù)啟動(dòng)順序的問(wèn)題,我在啟動(dòng)bat 中怎么了判斷mysql服務(wù)是否啟動(dòng)的判斷。
bat 內(nèi)容:
@echo off SETLOCAL enabledelayedexpansion rem 關(guān)閉自動(dòng)輸出 :begin for /f "skip=3 tokens=4" %%i in ('sc query MySQL') do set "zt=%%i" &goto :next :next if /i "%zt%"=="RUNNING" ( echo 已經(jīng)發(fā)現(xiàn)該服務(wù)在運(yùn)行。 ) else ( net start MySQL80 echo 已經(jīng)發(fā)現(xiàn)該服務(wù)在運(yùn)行1。 ) rem 接收輸入 rem 輸出得到的輸入信息 echo 啟動(dòng)NPSWebCore dotnet ./NPSWebCore.dll @echo 啟動(dòng)結(jié)束 exit
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
使用Aspose.Cells實(shí)現(xiàn)導(dǎo)入導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了如何使用Aspose.Cells實(shí)現(xiàn)導(dǎo)入導(dǎo)出,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12解析GridView自帶分頁(yè)及與DropDownList結(jié)合使用
本文主要介紹了GridView自帶的分頁(yè)功能的實(shí)現(xiàn)方法。具有一定的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12ASP.NET The system cannot find the file specified解決辦法
這篇文章主要介紹了ASP.NET The system cannot find the file specified解決辦法的相關(guān)資料,需要的朋友可以參考下2016-11-11ASP.NET Core 過(guò)濾器中使用依賴(lài)注入知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是關(guān)于ASP.NET Core 過(guò)濾器中使用依賴(lài)注入的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-10-10.NET Core單文件發(fā)布靜態(tài)編譯AOT CoreRT的方法詳解
這篇文章主要給大家介紹了關(guān)于.NET Core單文件發(fā)布靜態(tài)編譯AOT CoreRT的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07asp.net操作Word實(shí)現(xiàn)批量替換
這篇文章主要介紹了asp.net操作Word實(shí)現(xiàn)批量替換的方法,需要的朋友可以參考下2015-10-10