asp打开exe执行本地程序._Windows 上快速将一个控制台程序做成Windows服务

需求

有时候,我们有一个控制台应用程序(exe),双击启动后就能执行某项特定的功能,比如一些定时处理程序,后台监测程序等,但黑色的窗口关闭后应用程序就结束了,比如小编这里使用asp.net core 编写的一个网站,publish后输出一个exe控制台应用程序WebApplication.exe:

84fe6db19305aa7d81ec23ef64aa3adc.png

这时打开浏览器,输入http://localhost:5000 就能访问到网站了:

d03a0b6241948ad8a74298eba3408009.png

但当我们关闭黑窗口时应用程序结束。

在Windows上应用程序可以无窗口以服务方式运行,以服务方式运行有以下优点:

  • 可以设定随操作系统自启动
  • 可以静默运行

一般地,大家可能想到自己编写一个windows服务程序,安装服务不就可以了吗,但假设这个应用程序不是自己编写的呢?亦或者在开发阶段为了方便调试想以命令行方式运行,交付给客户以windows服务方式运行,怎么办呢?

解决

WinSW—一款开源的很轻量,支持配置的可将自定义进程托管为windows服务的应用程序,github地址为:https://github.com/kohsuke/winsw 具体大家可以进主页看看Readme.

  • 首先在官方下载该程序:
66c55cab75b52a4d502b8fddd99ae0a4.png

下载界面

  • 重命名WinSW.NET4.exe 和 sample-minimal.xml,名称保持一致,如 MyWebApp.exe 和MyWebApp.xml, 并将其放在控制台程序工作目录:
0540e372c99358e3369ff9c4979f3ca1.png
  • 编辑MyWebApp.xml文件:
5c8d4eca554fe2c925f0af4c27bacc39.png
  • 安装服务

以管理员方式启动cmd,cd到exe所在目录,执行 MyWebApp.exe install:

f1a40818db7b5a2ebb0cbc067e7c1b18.png
  • 启动服务
7cd2873e1e42ec8579231bbd5af4f871.png
  • 测试
d03a0b6241948ad8a74298eba3408009.png

拓展

上面以一个web应用程序为示例演示过程,那么其实借助该程序我们可以托管任何控制台程序成为一个windows服务,而且WinSW本身支持失败重启,权限配置等非常齐全的特性,如果深入使用的话可以参考 sample-allOptions.xml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值