C#封装服务

C#封装服务

  1. 新建服务项目;

  2. 重构 OnStart 和 OnStop

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    using System.Threading.Tasks;

    namespace WatchDogService
    {
    ///


    /// 守护进程
    ///

    public partial class WatchDogService : ServiceBase
    {
    //日志实例
    private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    public WatchDogService()
    {
    InitializeComponent();
    }

         /// <summary>
         /// 服务必须至少重写 OnStart 和 OnStop 才有用。
         /// </summary>
         /// <param name="args"></param>
         protected override void OnStart(string[] args)
         {
             logger.Info("log4net start");
         }
    
         protected override void OnStop()
         {
    
         }
     }
    

    }

  3. 添加安装服务

  4. 问题处理:

安装后运行会出现启动失败:

  • 当我们直接按F5或者其他方式直接运行项目时,会提示:"无法从命令行或调试程序启动服务。必须首先安装 Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务管理工具或 NETSTART命令启动它。
  • 安装installutil.exe
    1)确定平台版本:
    前提注意:如果你设置的目标平台是x64,打开的目录会不一样,不然导致服务运行不起来。可以右击项目名,点击【属性】------>【生成】------>【目标平台】查看。

2)根据版本选择相应地址:

x86版本,复制这个地址:C:\Windows\Microsoft.NET\Framework\v4.0.30319

x64版本,复制这个地址: C:\Windows\Microsoft.NET\Framework64\v4.0.30319
不然会报类似这种错误在初始化安装时发生异常: System.BadImageFormatException: 未能加载文件或程序集...

3)添加环境变量:

然后我们把上面的地址(根据自己的环境选择)添加到环境变量中: 1)点击【电脑】------>【属性】------>【高级系统设置】

2)点击【环境配置】,在下方的"系统变量"中选中"path",点击【编辑】 3)点击【新建】,输入上文的地址:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

cmd输入这个命令【InstallUtil】,如果是下面这样的内容说明成功了。

4)重新生成解决方案。

  1. 安装服务

以管理员身份运行cmd命令,然后安装服务:

1)查看生成服务的路径

2)安装服务:

  1. 运行服务

打开服务管理器,找到要启动的服务,然后右击启动服务。

启动后可以看到日志也有了:

  1. 卸载服务,可以运行这个命令:

    InstallUtil /u 项目启动执行文件全路径:InstallUtil /u D:\项目演示临时保存\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe

  1. 服务命令:

    1、安装服务:InstallUtil 项目启动执行文件全路径
    2、启动服务:net start 服务名
    3、停止服务:net stop 服务名
    4、卸载服务:InstallUtil /u 项目启动执行文件全路径

相关推荐
Envyᥫᩣ7 分钟前
C#语言:从入门到精通
开发语言·c#
IT技术分享社区6 小时前
C#实战:使用腾讯云识别服务轻松提取火车票信息
开发语言·c#·云计算·腾讯云·共识算法
△曉風殘月〆13 小时前
WPF MVVM入门系列教程(二、依赖属性)
c#·wpf·mvvm
逐·風15 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
m0_6569747418 小时前
C#中的集合类及其使用
开发语言·c#
九鼎科技-Leo18 小时前
了解 .NET 运行时与 .NET 框架:基础概念与相互关系
windows·c#·.net
九鼎科技-Leo21 小时前
什么是 ASP.NET Core?与 ASP.NET MVC 有什么区别?
windows·后端·c#·asp.net·mvc·.net
.net开发21 小时前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
小乖兽技术21 小时前
C#与C++交互开发系列(二十):跨进程通信之共享内存(Shared Memory)
c++·c#·交互·ipc
幼儿园园霸柒柒21 小时前
第七章: 7.3求一个3*3的整型矩阵对角线元素之和
c语言·c++·算法·矩阵·c#·1024程序员节