WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

  前言,为什么会分别在两个框架下编写Windows Service,是因为最近在做区块链这块,使用的是NEO(小蚁区块链)的相关技术,NEO使用的是.net core 2.1,业务上需要写两个程序,一个同步数据到本地,一个保持对链上数据的访问。之前一直是用的控制台,但是部署后容易误操作,关闭之类的(实际上一开始就该想到的),所以需要改成windows服务。就用.NET Framework 和.NET Core都试了一下。

IDE:vs2017

.NET Framework 下编写Windows Service

1、创建项目

2、将Service1改名为自己的名称BlockSyncService,并编写自己的程序

 

3、设置WindowsService的属性

定位到BlockSyncService页面,并查看代码,在OnSatrt()与OnStop()方法中写入对应服务启动与停止的代码。

4、回到BlockSyncService设计页面,右键空白处选择“添加安装程序”

5、右键serviceProcessInstaller1选择属性,设置Account(账户)为LocalSystem;

     右键serviceinstaller1选择属性,设置Description(对部署服务的描述)、ServiceName(部署服务的名称)、StartType(服务的启动方式(自启动-Automatic,手动启动-Manual,禁止启动-Disabled等))

     设置完后重新生成解决方案。

6、部署服务

以管理员身份运行cmd,输入命令  sc create 服务名称 binPath="程序exe文件的路径"   用于创建服务

注意:出现“[SC] OpenSCManager 失败 5:拒绝访问。” 的错误提示,请使用管理员身份打开命令提示符(cmd)

若没有设置启动方式,也可再输入命令 sc config BlockSyncService start="AUTO"     用于配置服务的启动方式(AUTO-自启动)

配置成功后,输入 net start BlockSyncService   启动服务即可。

 

 7、服务调试

WindowsService 无法直接调试,只能在已经启动服务的情况下,通过附加到进程,从而进行调试。如下图

勾选“显示所有用户”

选择自己的服务进程,并附加

注意:附加到进程是无法调试OnStart()方法的,一般情况下可以把OnStart()中的代码放到OnStop()中执行并调试。调试相对比较麻烦。

 

 

最后,win+r 并输入 swevices.msc 进入服务管理界面,右键停止即可触发调试。

 

.NET Core下编写Windows Service

1、创建一个.net core 控制台项目

2、添加WindowsService项

 

创建后,会提示错误。这是因为,没有命名空间“System.ServiceProcess.ServiceController”,需要nuget安装。

3、编写自己的程序,设置SBS-RPC-Service.cs中的OnStart()和OnStop(),最后设置Program.cs,重新生成代码。

 

 

调试与部署步骤与.NET Framework 的步骤基本一致,只是.net core 需要先发布,在创建服务时 binPath=“发布的.exe程序的路径”,其他的并无区别,这里就不再重复说了。

 顺便附一下官方的在 Windows 服务中托管 ASP.NET Core的文档:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1

 
分类: .Net
0
0
 
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多