.netcore入门29:使用nssm.exe将asp.net core控制台程序安装为window服务

环境:

  • window10 x64企业版
  • vs2019
  • asp.net core 3.1
  • nssm2.24-101

nssm官网:http://nssm.cc/,nssm使用文档:http://www.nssm.cc/usage

网盘下载地址:

链接:https://pan.baidu.com/s/1eaIVQABoV_0S4Ru0gi0aig
提取码:lctv

我们知道,使用asp.net core开发好的程序可以直接双击运行,因为它自带kestrel,是一个标准的控制台应用程序。
那么有什么办法让它变成一个window服务呢?

一、将exe程序变为window服务的方法

二、实验将asp.net core控制台程序安装为window服务

  • 步骤一:新建空的asp.net core工程 webempty;

  • 步骤二:将这个工程直接发布到文件夹,如下:在这里插入图片描述

  • 步骤三:在一个目录里准备好nssm.exe程序,如下:
    在这里插入图片描述

    注意:安装后的window服务指向的路径为nssm.exe,所以一旦使用后不要再移动nssm.exe,后面有截图…

  • 步骤四:在nssm.exe程序所在目录下运行命令行nssm.exe install,弹框如下:
    在这里插入图片描述

  • 步骤五:设置服务名称和运行的exe路径
    在这里插入图片描述

  • 步骤六:设置显示的服务名称和说明信息(以及启动模式)
    在这里插入图片描述

  • 步骤七:点击Install service,完成安装:
    在这里插入图片描述

此时,我们就可以在window服务后台看到了:
在这里插入图片描述
刚安装后,它不会自动启动,需要我们手工启动一下,之后它自己就可以随着操作系统启动了。
还有,如果应用程序因为运行期间报错挂掉的话,nssm.exe是自动让应用程序重启的。
另外,因为安装后的服务指向的路径是nssm.exe程序的路径,所以我们需要将nssm.exe文件的路径固定住,不要随便移动它,可以通过服务的属性看到:在这里插入图片描述

三、nssm.exe扩展之使用指定的文件接收exe程序的控制台输出

我们可以在安装服务的时候指定用一个文件替换控制台作为标准输出,也就是说你代码中的Console.WriteLine("....")输出的内容会被重定向到你指定的文件中,如下图所示:
在这里插入图片描述
在这里插入图片描述

当我们启动服务后,发现文件内的输出:
在这里插入图片描述

四、nssm.exe扩展之设置exe程序运行时的环境变量

对于asp.net core应用程序来说,程序的运行环境很重要,微软提供了三种环境(DevelopmentStagingProduction),当我们使用vs进行调试时是Development,而当我们直接双击生成的exe运行时是Production,其实我们可以扩充自己需要的环境种类并直接exe程序运行时的环境。
如下图,将程序运行的环境手动设置为:Development
在这里插入图片描述

五、附:nssm常用命令

启动服务:nssm start <servicename>
停止服务: nssm stop <servicename>
重启服务: nssm restart <servicename>
编辑服务:nssm edit <servicename>
移除服务:nssm remove <servicename>

服务自动化需要使用更多的命令行,具体参看官方文档: https://nssm.cc/commands

如下是一个官方安装Jenkins服务的示例:

nssm install Jenkins %PROGRAMFILES%\Java\jre7\bin\java.exe
nssm set Jenkins AppParameters -jar slave.jar -jnlpUrl https://jenkins/computer/%COMPUTERNAME%/slave-agent.jnlp -secret redacted
nssm set Jenkins AppDirectory C:\Jenkins
nssm set Jenkins AppStdout C:\Jenkins\jenkins.log
nssm set Jenkins AppStderr C:\Jenkins\jenkins.log
nssm set Jenkins AppStopMethodSkip 6
nssm set Jenkins AppStopMethodConsole 1000
nssm set Jenkins AppThrottle 5000
nssm start Jenkins
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackletter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值