欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net core部署到windows服务上的完整步骤

程序员文章站 2022-04-29 09:54:14
前言 net core 项目部门在windows有很多种方式,大致有以下几种, dotnet 命令, iis(windowshosts), 一些开源的应用容...

前言

net core 项目部门在windows有很多种方式,大致有以下几种,

  1. dotnet 命令,
  2. iis(windowshosts),
  3. 一些开源的应用容器(docker )
  4. 基于一些exe 程序,微软官网上案例
  5. nssm 搭建windows服务

其中优劣对比在这不进行累述。我今天是把它搭建到windows服务上的,这种方式对于我们现有dotnet来说相对美观(一个黑框框,一个看不到),电脑重启可以自动重启。

1.实现

1.1.下载nssm

官网,下载地址

1.2.搭建windows 服务 

找到文件夹下建立的install.bat 点击运行弹出操作窗体。

install.bat内容:

%~d0
cd %~dp0
nssm install npswebcoreservice
pause

.net core部署到windows服务上的完整步骤

path:选择系统运行bat----c:\nps\coreweb\1run.bat

ps:因为我们系统中要特殊处理所以直接执行了bat。此内容正常是填写c:\program files\dotnet\dotnet.exe. 因为要执行dotnet命令,我这些操作实在bat中执行的。

startup directory:bat 所在目录不用改变;

ps:发布项目文件夹的地址。

arguments:为空;

ps:项目运行dll:

service name:我写在install.bat 批处理里面了,不要改变,因为代码中重启服务我这是写死的。。

ps:创建线管名称即可,即windows 服务名称。

然后点击install service按钮就完成了部署。

注:红色字体为是一般处理方式,非红色是我们系统中处理的方式

1.2.3 启动服务

让后输入网站就可以访问了

.net core部署到windows服务上的完整步骤

.net core部署到windows服务上的完整步骤

3. nssm

3.1.输入nssm 了解其命令行

3.2.官网

4. 针对与咱们系统的问题的处理方案 

4.1. 日志问题,nssm 中path 文件运行bat 不要运行dotnet.exe. log4net 配置问题。

4.2. office 转换pdf 问题,windows servers 2008 服务器缺少com组件缺少窗口,我在程序中增加了相关代码,如果没有权限请手动创建(服务器2008 r2 ,2016都能创建)

system.runtime.interopservices.comexception (0x800a03ec): microsoft office excel 不能访问文件“d:\benz\daimler\benz.win\lshbizplanfigure.xls”。 可能的原因有:

? 文件名称或路径不存在。
? 文件正被其他程序使用。
? 您正要保存的工作簿与当前打开的工作簿同名。

此问题的出现 我十分不解。

解决方案 也十分疑惑

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目录下创建名为desktop目录即可解决问题

该方法确实解决了我的问题

4.3.数据库备份重启服务问题,改为重启windows服务,所以请用上面的install.bat运行不要,改变service name。

重启服务代码:

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 服务问题,担心再启服务器的时候,mysql和windows 服务启动顺序的问题,我在启动bat 中怎么了判断mysql服务是否启动的判断。

bat 内容:

@echo off

setlocal enabledelayedexpansion
rem 关闭自动输出
:begin

for /f "skip=3 tokens=4" %%i in ('sc query mysql') do set "zt=%%i" &goto :next
:next
if /i "%zt%"=="running" (
 echo 已经发现该服务在运行。
) else (
 net start mysql80
 echo 已经发现该服务在运行1。
)

rem 接收输入
rem 输出得到的输入信息
echo 启动npswebcore

dotnet ./npswebcore.dll

@echo 启动结束
exit

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。