.NET Core部署为Windows服务的详细步骤

使用.NET Core创建部署Windows服务 创建 首先你要确保你已经安装了.NET Core 3.0或以上版本。 使用命令行创建:dotnet new worker 使用Visual Studio创建 中文版: 英文版: 创建的新项目包含两个文件。其中Program.cs文件是应用的启动程序。另外一个文件是Worker.cs文件,你可以在这个文件编写你的业务代码。 这看起来应该... 阅读详情
AI摘要

本文详细介绍了如何将.NETCore项目部署为Windows服务,包括配置、使用sc.exe工具以及Linux环境下的Systemd部署。同时提供了Linux服务的创建、启动、状态管理和日志查看方法。

一、概述

目前测试了下面两个项目,均可以部署为Windows服务运行。部署的方式

二、.NET Core部署Windows服务

1、项目中需要的配置

想要将.NET Core部署为window服务,项目中需要进行以下配置:项目中引入Microsoft.Extensions.Hosting.WindowsServices包

修改Program.cs文件,添加UseWindowsService()方法调用

 
  1. using Microsoft.ASPNetCore.Hosting;
  2. using Microsoft.Extensions.Hosting;
  3. using System.Net;
  4. namespace XXService
  5. {
  6.      public class Program
  7.      {
  8.          public static void Main(string[] args)
  9.          {
  10.              CreateHostBuilder(args).Build().Run();
  11.          }
  12.          public static IHostBuilder CreateHostBuilder(string[] args)
  13.          {
  14.              return Host.CreateDefaultBuilder(args)//使用默认配置实例化Host主机
  15.                  .UseWindowsService()//指定项目可以部署为Windows服务
  16.                  .ConfigureWebHostDefaults(webBuilder =>
  17.                  {
  18.                      webBuilder.UseStartup<Startup>()
  19.                      .UseKestrel(options =>
  20.                      {
  21.                      options.Listen(IPAddress.Any, 50003);//指定端口号,不然如果部署了多个服务,容易出现端口号占用
  22.                      options.Limits.MaxRequestBodySize = null;
  23.                      }); ;
  24.                  })
  25.                  .UseDefaultServiceProvider(options => options.ValidateScopes = false);
  26.          }
  27.      }
  28. }

2、服务器中使用sc.exe工具部署Windows服务

sc.exe是帮助开发部署 WindowsNT 服务的工具,路径: C:\Windows\System32\sc.exe。

(1)将项目发布到服务器

(2)使用管理员权限运行PowerShell

(3)部署的相关命令:ServiceName是自定义的服务名称,可以自行修改

 
  1. ## 创建服务
  2. sc.exe create ServiceName BinPath=C:\xx\ClearFontService\ClearFontService.exe
  3. ## 启动服务
  4. sc.exe start ServiceName
  5. ## 停止服务
  6. sc.exe stop ServiceName
  7. ## 删除服务
  8. sc.exe delete ServiceName
  9. ## 添加服务描述
  10. sc description ServiceName "描述"
  11. ## 改变服务的启动方式 手动/自动/禁用
  12. sc.exe config ServiceName start= demand/auto/disabled

(4)创建安装脚本install.BAT

 
  1. set serviceName=ServiceName
  2. set serviceFilePath=C:\xx\ClearFontService\ClearFontService.exe
  3. set serviceDescription=服务描述
  4. sc.exe create %serviceName% BinPath=%serviceFilePath%
  5. sc.exe config %serviceName% start=auto
  6. sc.exe description %serviceName% %serviceDescription%
  7. sc.exe start %serviceName%
  8. pause

(5)卸载服务脚本unstall.bat

 
  1. set serviceName=ServiceName
  2. sc.exe stop %serviceName%
  3. sc.exe delete %serviceName%
  4. pause

使用管理员权限运行脚本

三、NetCore项目部署为Linux服务

环境:操作系统Centos 8系统

1、安装 .net core相关环境

注册 Microsoft 密钥和源:

 
  1.      sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安装 .NET Core SDK:

 
  1. sudo yum install aspnetcore-runtime-3.1

安装完成之后验证:

 
  1. # 验证dotnet core runtime是否安装成功
  2. dotnet --version
  3. #查看系统中包含的.net core runtime版本
  4. dotnet --list-runtimes

2、项目中需要的配置

项目中引入Microsoft.Extensions.Hosting.Systemd包

修改Program.cs文件,添加UseSystemd()方法调用,可以和UseWindowsService()共存

 
  1. usingMicrosoft.AspNetCore.Hosting;using Microsoft.Extensions.Hosting;
  2. using System.Net;
  3. namespace ClearFontService
  4. {
  5.      public class Program
  6.      {
  7.          public static void Main(string[] args)
  8.          {
  9.              CreateHostBuilder(args).Build().Run();
  10.          }
  11.          public static IHostBuilder CreateHostBuilder(string[] args)
  12.          {
  13.              return Host.CreateDefaultBuilder(args)//使用默认配置实例化Host主机
  14.                  .UseWindowsService()
  15.                      .UseSystemd()
  16.                  .ConfigureWebHostDefaults(webBuilder =>
  17.                  {
  18.                      webBuilder.UseStartup<Startup>()
  19.                      .UseKestrel(options =>
  20.                      {
  21.                  options.Listen(IPAddress.Any, 50003);
  22.                      options.Limits.MaxRequestBodySize = null;
  23.                      }); ;
  24.                  })
  25.                  .UseDefaultServiceProvider(options => options.ValidateScopes = false);
  26.          }
  27.      }
  28. }

然后把发布文件移至linux系统

3、部署服务

linux的服务是通过systemd守护进程部署的。现在在系统中我们有了一个发布后的应用程序,我们需要为systemd创建配置文件部署服务。步骤如下:

(1)创建一个.service文件(我们要部署服务,因此需要.service文件),填入以下内容。可以在Linux中直接创建或者通过windows创建然后拷贝至linux。

 
  1. [Unit]
  2. Description= my test app
  3. [Service]
  4. Type=notify
  5. ExecStart=/usr/bin/dotnet /home/demo/WorkerService.dll
  6. [Install]
  7. WantedBy=multi-user.target
  • Description:描述,看个人需要是否添加。不需要可以去掉。只留下 [Service] 和 [Install]
  • Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
  • ExecStart:启动当前服务的命令,程序如何启动,第一个路径是固定路径。第二个路径是应用程序的dll路径(可以自定义)
  • WantedBy:表示该服务所在的 Target服务组, multi-user.target,表示多用户命令行状态。 

(2).service文件移动至/etc/systemd/system/ 固定目录下,假设自定义文件名称为:testapp.service(如果使用其他名称,请更改testapp)

(3)使用systemctl命令重新加载新的配置文件

 
  1. sudo systemctl daemon-reload

(4)查看相关服务状态

 
  1. sudo systemctl status testapp

您应该看到类似以下的内容:

(5)这表明您已注册的新服务已禁用,我们可以通过运行以下命令来启动我们的服务:

 
  1. sudo systemctl start testapp.service

(6)重新运行suDOSystemctl status testapp 查看服务状态显示已激活正在运行中

(7)设置服务开机自启

 
  1. sudo systemctl enable testapp.service

到此我们的服务已经完整的部署到了linux系统中。

(8)现在我们有一个运行了systemd的应用程序,我们可以看看日志记录集成。使用systemd的好处之一是可以使用journalctl访问的集中式日志记录系统。首先,我们可以使用journalctl(访问日志的命令)查看服务日志:

 
  1. sudo journalctl -u testapp

可以看到我们的程序正在运行,可以使用↑↓ ← →查看日志内容。或者使用grep搜索。q 键退出

(9)卸载自定义服务

 
  1. servicename=testapp.service
  2. systemctl stop $servicename
  3. systemctl disable $servicename
  4. rm -rf /etc/systemd/system/$servicename
  5. rm -rf /etc/systemd/system/$servicename symlinks that might be related
  6. systemctl daemon-reload
  7. systemctl reset-failed

到此这篇关于.NET Core部署为Windows服务的文章就介绍到这了,更多相关.NET Core部署Windows内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

来源地址: http://www.cppcns.com/wangluo/aspnet/531574.html

asp.net core在win上的发布和部署 手把手教你在win11中发布asp.net core应用,带你认识两种发布的类型的差别,了解调试部署和生产部署的一般流程 阅读详情

相关推荐

如何将.NET Core部署为Windows服务

目前测试了下面两个项目,均可以部署为Windows服务运行。部署的方式二、.NET Core部署Windows服务。

风清扬的专栏 5021

.Net Core WebApi(二)在Windows服务器上部署

https://www.cnblogs.com/LYF1997/p/11507747.html 上一篇学习到了如何简单的创建.Net Core Api和Swagger使用,既然写了接口,那么就需要部署到服务器上才能够正式使用。服务器主要用到了两种系统,Windows和Linux,.Net和Windows都是属于微软爸爸的,那么这一篇就先从部署到Windows服务器系统开始吧。 一、准备服务器   首先,我们需要一台装了Windows Server的云服务器,但是我没有。那么,到这里就结束了。(╮(

zunguitiancheng的专栏 3178

ASP.NET Core后台运行(Windows Service)方法

我们知道,ASP.NET Core网站开发完成以后,运行的时候会出现一个控制台窗口,如下图所示: 一方面,这个窗口不太雅观,而且容易被用户不小心关闭;另一方面,系统重启之后,服务不会随系统一起启动。 为了解决上面的问题,可以把ASP.NET Core应用包装成Windows Service,具体方法如下: 1、开发好ASP.NET Core应用。(本文介绍的是基于.NET 5) 2、在项目中添加包Microsoft.Extensions.Hosting.WindowsServices。 3、.

lweiyue的专栏 4185

tomcat如何部署.net程序_如何优雅的利用Windows服务来部署ASP.NET Core程序

上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能。但是美中不足的是需要借助第三方软件nssm来进行,那么有没有更好并且优雅的方式来进行ASP.NET Core网站的Windows服务方式部署呢?答案是肯定的!作者:依乐祝原文链接:https://www...

weixin_39742065的博客 1839

ASP.NET Core部署指南:Windows Edition

通过按照以上步骤,您已经成功在Windows操作系统上部署了ASP.NET Core应用程序。现在,您的应用程序可以在IIS中运行,并通过HTTP访问。通过按照以上步骤,您已经成功在Windows操作系统上部署了ASP.NET Core应用程序。为了验证部署是否成功,您可以尝试在浏览器中访问应用程序的URL(使用您在第5步中配置的HTTP绑定的端口号)。为了验证部署是否成功,您可以尝试在浏览器中访问应用程序的URL(使用您在第5步中配置的HTTP绑定的端口号)。替换为您希望将应用程序发布到的文件夹路径。

RzuScala的博客 264

如何将ASP.NET Core Web API(.net8) 部署为 Windows 服务

将ASP.NET Core Web API部署为Windows服务,能够确保服务在系统重启后自动启动,并且长期稳定运行。通过上述步骤,你可以轻松地将Web API部署为Windows服务,并创建相应的脚本以便自动化部署和管理。这种方法适用于生产环境中的服务部署,确保了服务的高可用性和稳定性。同时,利用ASP.NET Core的跨平台特性,你的应用也可以在Linux或容器中运行,具有更广泛的部署灵活性。

qq_30345409的博客 3420

【踩坑记录】Latex引文bib报错

VScode+Texlive+Zotero本地论文写作环境踩坑。解决Zotero导出bib文件后tex中通过cite引用时所产生的问题。

weixin_43319948的博客 2823

.net core 部署到windows服务上的方法

前言 Net core 项目部门在Windows有很多种方式,大致有以下几种, dotnet 命令, iis(windowshosts), 一些开源的应用容器(docker ) 基于一些exe 程序,微软官网上案例 Nssm 搭建windows服务 其中优劣对比在这不进行累述。我今天是把它搭建到windows服务上的,这种方式对于我们现有dotnet来说相对美观(一...

weixin_30787531的博客 1046

芯片散热技术突破:多尺度结构与VC集成方案解析

在半导体技术快速发展的背景下,芯片散热成为制约性能提升的关键瓶颈。传统散热技术如风冷和水冷已接近物理极限,而两相浸没式液冷技术凭借其超高传热系数成为新的解决方案。通过多尺度表面结构设计与真空腔均热板(Vapor Chamber)的集成创新,可以显著提升沸腾性能,降低沸腾起始温差(ONB)并突破临界热流密度(CHF)限制。这种技术在数据中心、高性能计算(HPC)和边缘计算等高热流密度场景中具有重要应用价值,能有效提升能效比(PUE)并降低能耗。

weixin_36288992的博客 151

黑科技已上线|Lazada数据分析软件,一键式搞定你的店铺!

工欲利其事,必先利其器。在lazada跨境电商的整个流程中,适当的使用一些工具,不仅能大大的简化工作流程,而且可以提高实施效率。Mengla专为lazada电商卖家行业精细化分析lazada数据分析软件都有哪些强大功能! 一、两大优势: 1.海量数据: 数据覆盖面积大;数据分析维度逛;精确算法抓取海量数据;亿万数据秒级响应多种数据来源; 2.技术成熟: 深耕SaaS大数据挖掘;提供一站式数据分析服务;拥有领先的采集技术和运算模型架构; 二、Lazada数据分析软件的功能: 1.各国站点一键分析: 马来西亚

Menglakeji的博客 1144

三种把.Net Core部署至 Windows 服务的方法

三种把.Net Core 部署到Windows 服务的方法

weixin_39667153的博客 944

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

用NSSM把.Net Core部署至 Windows 服务

为什么部署至Windows Services 在很多情况下,很少会把.Net Core项目部署至Windows服务中,特别是Asp.net Core就更少了。一般情况下,Asp.net Core会部署至linux服务器,或者部署至Windows的IIS中。但也不排除会有Asp.net Core部署至Windows 服务中的情况,比如Windows服务器并没有安装IIS,或者Asp.net Cor...

weixin_30621959的博客 115

安装Anaconda和Labelme的教程

1 登录Anaconda官网,选择Download https://www.anaconda.com/distribution/ 2 选择你想下载的Python版本,选择你的操作系统和位数,然后点击Download按钮就开始下载了 3 开始安装 下面两个框框都勾选 点击next,等待安装成功 打开Anaconda Navigator 点击红色圈圈的按钮 在cmd中输入 (1)创建虚拟环境 conda create -n labelme python=3.6 (2)激活虚拟环境 conda activa

qq_42178122的博客 3807

最新Python爬虫实战(入门爬虫篇)——案例13:某乎热榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了基于Cookies认证的某乎热榜数据爬取与Excel保存。代码采用模块化设计,包含Cookies解析、HTML请求、结构化解析、Excel持久化等完整流程;通过配置浏览器请求头+Cookies认证,有效突破某乎基础反爬策略,保证请求稳定性。整个爬虫逻辑遵循“Cookies认证 → 页面请求 → HTML解析 → 数据清洗 → 保存到Excel”的标准流程,与需要会话验证的网站爬取范式高度一致。Cookies解析与认证。

努力让自己发光,对的人才能迎着光而来 33万+

Asp.net core项目部署 windows服务 及注意事项

1.官网 https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-3.0 2.步骤 条件:控制台应用程序 。 官网那个windows服务测试项目不是控制台应用程序。 一下代码一定要用上,不然会出错。 编辑项目工程文件,对应地方改为如下: <Prop...

八步赶蝉 4159

从原理到落地:Java+TensorRT打造YOLO模型GPU极致推理方案

Java+TensorRT的YOLO模型GPU加速方案,核心是通过JNI桥接实现Java与TensorRT的高效交互,结合TensorRT的底层优化能力,最大化GPU算力。该方案既保留了Java后端的工程化优势(如易维护、生态完善),又解决了AI模型推理的性能瓶颈,可落地于实时视频分析、智能监控、工业质检等场景。基于TensorRT Dynamic Shape实现多尺寸输入的自适应优化;结合Java的协程(Virtual Thread)提升异步推理的并发效率;

2601_94871597的博客 765

使用NSSM把.Net Core部署至 Windows 服务

为什么部署至Windows Services 在很多情况下,很少会把.Net Core项目部署至Windows服务中,特别是Asp.net Core就更少了。一般情况下,Asp.net Core会部署至linux服务器,或者部署至Windows的IIS中。但也不排除会有Asp.net Core部署至Windows 服务中的情况,比如Windows服务器并没有安装IIS,或者Asp.net Cor...

farmwang的专栏 1184

uniapp:安卓苹果APP判断是否授权开启手机位置服务+弹框引导跳转到用户手机设置位置服务开启页面,uniApp app判断是否授权位置信息权限如果位置是关闭状态则提示用户(跳转各机型位置设置页面)

uniapp APP判断是否开启位置信息服务&&判断是否授权位置信息权限,uniappapp定位权限被拒绝后,询问是否开启授权并跳转到手机设置页面,uniapp APP端 定位未授权 去手机设置里开启定位,uniapp提示用户开启定位,跳转到开启定位页面,uniapp获取当前位置及检测授权状态,uniapp中获取位置信息处理,uni-app实现定位功能_uniapp获取定位位置信息,uniapp中app是否开启定位,app获取地理位置,uniapp打开位置权限设置页面IOS,用户并没有开启微信信息服务或者没

✅ 精选推荐文章 4342

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ASP.Net Core部署为Windows服务的

.net core 版本:2.1 产生的问题: 按照官方的方式将ASP.NET Core部署成WINDOWS服务后,会报以下错误,因为是使用 dotnet.exe 来启动程序,启动目录定位到了c:\windows\system32\下,暂时没有找到怎么切换到程序目录的方法。 Application: dotnet.exe CoreCLR Version: 4.6.28516.3 Description: The process was terminated due to an unhandled e

netflu博客 1936

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ASP.Net Core Web Api在Windows服务器上部署

一、在Windows服务器上搭建环境 1.1、下载.NET Core Runtime .NET Core Runtime下载

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

.net Core 3.1 项目打包部署到Windows服务

1.下载nssm软件工具: 下载地址http://www.nssm.cc/download 2.创建一个.net core 项目 项目显示如下 3.引入了nuget包,用于log日志,最后用于ReadKey() 是因为控制主线程的结束。 4.发布文件 到一个文件夹下。 5.以管理员身份运行命令行模式 启动nssm软件 创建windows服务 6.Path:dotnet所在的目录,一般默认是在C:\Program Files\dotnet\dotnet.exe; Startup directory:程

Stupid_Insect的博客 2022

Windows 服务器部署 asp.net core

踩坑日记与 Windows 服务器部署 asp.net core 指南。 准备 操作系统:Windows Server 2008 R2 或更高版本 文件: Microsoft Visual C++ 2015 Redistributable aspnetcore-runtime dotnet-hosting 后面这两个文件的下载地址:.NET download archives for Linu...

weixin_33921089的博客 256

第三节:Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)

一. 简介   Asp.Net Core 部署方式有两种:依赖框架和独立部署。 1. 框架依赖的部署:   顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core。 由于已存在 .NET Core,因此应用在 .NET Core 安装程序间也是可移植的。 应用仅包含其自己的代码和任何位于 .NET Core 库外的第三方依赖项。 FDD 包含可通过在命令...

weixin_33757609的博客 1万+
上一篇: Redis++源码学习1
下一篇: Windows下文本工具试用记录
UU_Yang
博客等级 码龄23年 927粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值