首页 > 系统相关 >.net7 创建windows后台服务

.net7 创建windows后台服务

时间:2023-08-18 14:01:14浏览次数:47  
标签:服务 windows 创建 应用程序 后台 使用 net7

开发语言:C#
运行时:.net7
开发环境:visual studio 2022
微软官方文档:https://learn.microsoft.com/zh-cn/dotnet/core/extensions/windows-service?pivots=dotnet-7-0


最近公司需要使用后台调度服务定时拉取业务数据并推送至第三方,原本是直接使用aps.net core应用程序部署在IIS上,然后出现了不定时运行终止的情况,经过排查后发现是因为IIS有一个特定的机制:应用程序池空闲一段时间后会自动终止。然后就想把应用程序部署成windows后台服务,这样就不会停止了,linux使用docker部署应该是没有问题

一、创建Windows服务

创建辅助角色服务项目

(1)打开【visual studio】,然后选择【辅助角色服务】,点击下一步

(2)调整为自己的项目名称,此处我就不做更改了,框架选择.net7,使不使用顶级语句看个人习惯,我这里选择使用顶级语句,最后点击创建


创建好的目录如下:【Program.cs】为主入口,【Worker.cs】为服务启动后执行的逻辑

(3)引用相关nuget包,引用后代码修改如下,其中结构参照了应用程序的结构,但不影响正常使用

  • 【Microsoft.Extensions.Hosting.WindowsServices】:用于配置成windows服务
  • 【Serilog.AspNetCore】:使用serilog记录日志
  • 【Serilog.Sinks.Async】:使用异步记录日志



二、创建一键部署windows服务的批处理命令

(1)创建【InstallWindowsService.bat】批处理命令文件,命令如下,注意文件属性要标识复制到生成目录,不然打包后会没有文件

(2)打包后使用管理员运行批处理命令,运行成功后可以在windows服务看到此服务

(3)运行后发现程序目录没有产生日志,这是因为windows服务是在C:\Windows\System32运行的,在appsetting中没有指定绝对路径就会设置当前运行目录+相对路径
这里使用环境变量解决这个问题,对了,这里要加上UseSerilog


标签:服务,windows,创建,应用程序,后台,使用,net7
From: https://www.cnblogs.com/EasyNetCore/p/17640295.html

相关文章

  • C#异步调用Process(),后台静默调用cmd控制台
    C#调用cmd控制台操作,网上有太多的教程了,但是大多数都是执行完一条指令,退出Process,下次执行指令,再次newProcess(),(只为了接收到cmd指令的回复,不然会进程阻塞,程序至此不会再跑。)这种情形如果是执行bat文件,或者执行类似ping这种对执行下条指令没有运行环境要求的指令,影响不大。同......
  • 使用.NET Framework进行Windows桌面应用程序开发
    当编写涉及使用.NETFramework进行Windows桌面应用程序开发的博客时,您可以涵盖从界面设计到用户交互和数据处理的各个方面。以下是一个简要的指南,您可以在博客中展开介绍,同时结合示例代码来说明。1.创建项目和界面设计项目创建:使用VisualStudio创建新的WindowsForms应用程序项......
  • windows10 登陆FTP成功后总是打开两个窗口
     具体现象:使用windows资源管理器打开登陆FTP,登陆FTP成功后当前窗口显示此文件夹为空,不在当前窗口显示文件夹内容,却在当前窗口后重新打开了一个资源管理器窗口显示FTP文件夹内容 解决方法:在资源管理器中输入地址时加上用户名,比如ftp://[email protected] ......
  • Windows 下后台启动 jar 包,UTF-8 启动 jar 包
    1.Windows下启动jar包小贴士:打包的时候把application.yml所有内容都注释掉,然后打包,再把application.yml与打好的jar包放在同级目录下,如图所示。jar包在启动的时候就会去读取此application.yml。  前台启动jar包:使用java.exe启动jar包,一旦把窗口关闭,就会结束......
  • 黑苹果MAC 与 win10 双系统时间不一致(黑苹果系统与windows时间差问题的解决)
    原因分析可能你们都遇到过这样的问题,就是安装完OSX系统以后,发现系统时间和Windows的系统时间就不对了,总是相差了几个小时(刚好8个小时),这个问题的原因呢其实是因为他们看待系统硬件时间的方式不一样引起的,Windows把系统硬件时间当做本地时间,也就是操作系统显示的时间是跟Bios或者Ef......
  • js前端传json,后台接收‘‘被转为quot使用replace方法替换
    前端解决方案:varjsonstr=datas.replace(newRegExp('"',"gm"),'"')正则参数说明g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。m执行多行匹配。let data=eval('('+jsonString+')');实例1:    jsonstr.replace(newRegExp('"',......
  • C# Windows登录界面进行截图,控制鼠标键盘等操作实现(三)
    在Windows登录界面进行截图,目前尝试到的以下的截图方法可以截取到图,其它的方式要么卡住,要么截出来是黑屏的,直接上代码:///<summary>使用Graphics方式捕获桌面截图(效率低于DesktopCapture,主要用户登录界面截图)</summary>internalclassGraphicCapture{privateconst......
  • Lnton羚通关于安装 Visual Studio 2022 Community 卡住了&& 安装 Windows SDK(Softwar
    【问题原因】a.系统升级了;b.之前卸载没卸载干净,注册表里存在旧的信息;【解决过程】1.查看日志在资源管理器中输入%TEMP%\windowssdk,查看日志文件,找到最新的日志文件,在文件中搜索Warning出现了一组长串数字,用 {} 括起来的一串,这串数字后面要用;2.微软官方工具微软官方的工具(Micr......
  • dotnet7下docker镜像构建之XML打包丢失问题
    注意暂时值适用.NETSDK7.0.100以上其他版本,可以参考举例中的配置host项目省流原因dotnetpublish发布命令对于引用项目的xml不会拷贝到发布目录举例host项目依赖api项目,api项目依赖utils包,utils包中的xml文件在host项目swagger需要使用xml文件一般包引用xml文件输出配......
  • Windows系统下将java程序开机自启
    1.下载使用winsw将可执行程序注册为windows的系统服务。点击右侧release下载对应版本。https://github.com/kohsuke/winsw需要下载对应的exe可执行文件和xml模板2.编写配置文件将下载的exe更名为你的服务名,如:MyAPP.exe。打开sample-minimal.xml<service><id>MyApp......