.NET Core使用Topshelf方式创建Windows服务的全过程记录

 更新时间:2020-11-19 04:07:27   作者:佚名   我要评论(0)

前言
Topshelf是一个.NET Standard库,它消除了在.NET Framework和.NET Core中创建Windows服务的那些麻烦。
安装


Install-Package Topshelf


代码


using Syste

前言

Topshelf是一个.NET Standard库,它消除了在.NET Framework和.NET Core中创建Windows服务的那些麻烦。

安装

Install-Package Topshelf

代码

using System;
using System.Collections.Generic;
using System.Text;
using Topshelf;


namespace ConsoleApp2222
{
 public class LoggingService : ServiceControl
 {
  private void Log(string logMessage)
  {
   Console.WriteLine(logMessage);
  }


  public bool Start(HostControl hostControl)
  {
   Log("Starting");
   return true;
  }


  public bool Stop(HostControl hostControl)
  {
   Log("Stopping");
   return true;
  }
 }
}

在Program.cs文件的Main方法中

1、服务的名称

2、服务是否自动启动

3、服务崩溃之后的重启时间

using System;
using Topshelf;


namespace ConsoleApp2222
{
 internal class Program
 {
  private static void Main(string[] args)
  {
   HostFactory.Run(x =>
   {
    x.Service<LoggingService>();
    x.EnableServiceRecovery(r => r.RestartService(TimeSpan.FromSeconds(10)));
    x.SetServiceName("TestService");
    x.StartAutomatically();
   }
  );
  }
 }
}

部署服务

ConsoleApp2222.exe install
ConsoleApp2222.exe start

调试服务

如果我们的服务代码已经在Visual Studio中打开了,我们就可以直接启动调试。Topshelf会模拟在控制台中启动服务。我们应该能在控制台中看到以下的消息。

这确实符合了我们的需求。它启动了我们的服务,并像真正的Windows服务一样在后台运行。我们可以像往常一样设置断点,基本上它遵循的流程和正常安装的服务一样。

我们可以通过ctrl+c, 来关闭我们的应用,但是在运行服务执行Stop方法之前,它是不能被关闭的,这使我们可以调试服务的关闭流程。与调试指令和配置标志相比,这要容易的多。

这里需要注意一个问题。如果你收到的以下内容的消息:

这意味着你尝试调试的服务实际上已经作为Windows服务被安装在系统中了,你需要停止(不需要卸载)这个正在运行的服务,才可以正常调试。

参考文档

https://topshelf.readthedocs.io/en/latest/configuration/config_api.html

https://github.com/Topshelf/Topshelf

http://topshelf-project.com/

总结

到此这篇关于.NET Core使用Topshelf方式创建Windows服务的文章就介绍到这了,更多相关.NET Core用Topshelf创建Windows服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • .net core部署到windows服务上的完整步骤
  • 用.NET创建Windows服务的方法
  • 使用.NET Core3.0创建一个Windows服务的方法
  • .Net Core WebApi部署到Windows服务器上的步骤

相关文章

  • .NET Core使用Topshelf方式创建Windows服务的全过程记录

    .NET Core使用Topshelf方式创建Windows服务的全过程记录

    前言 Topshelf是一个.NET Standard库,它消除了在.NET Framework和.NET Core中创建Windows服务的那些麻烦。 安装 Install-Package Topshelf 代码 using Syste
    2020-11-19
  • ASP.NET Core3.1 Ocelot认证的实现

    ASP.NET Core3.1 Ocelot认证的实现

    1.认证 当客户端通过Ocelot访问下游服务的时候,为了保护下游资源服务器会进行认证鉴权,这时候需要在Ocelot添加认证服务。添加认证服务后,随后Ocelot会基于授权密
    2020-11-19
  • .NET Core使用FluentEmail发送邮件的示例代码

    .NET Core使用FluentEmail发送邮件的示例代码

    前言 在实际的项目开发中,我们会遇到许多需要通过程序发送邮件的场景,比如异常报警、消息、进度通知等等。一般情况下我们使用原生的SmtpClient类库居多,它能满足
    2020-11-19
  • ASP.NET Core使用JWT认证授权的方法

    ASP.NET Core使用JWT认证授权的方法

    demo地址: https://github.com/william0705/JWTS 名词解析 认证 : 识别用户是否合法 授权: 赋予用户权限 (能访问哪些资源) 鉴权: 鉴定权限是否合法 Jwt优势与劣
    2020-11-19
  • ASP.NET Core3.1 Ocelot负载均衡的实现

    ASP.NET Core3.1 Ocelot负载均衡的实现

    1.负载均衡 Ocelot可以在每个路由的可用下游服务中实现负载均衡,这使我们更有效地选择下游服务来处理请求。负载均衡类型: LeastConnection:根据服务正在处
    2020-11-19
  • .Net Core中使用Grpc的方法

    .Net Core中使用Grpc的方法

    一、Grpc概述   gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型。gRPC 默认使用protocol buffers作为接口定义语言,来描述服务
    2020-11-19
  • .NET Core如何进行请求转发的实现

    .NET Core如何进行请求转发的实现

    前言 冒个泡,近日,有关注我公众号的小伙伴私信我,遇到一个问题搞了很久没解决,此问题具有参考意义,这里跟大家分享下,希望对后续可能有需要的你能有所参考和帮
    2020-11-19
  • UrlRewrite概念原理及使用方法解析

    UrlRewrite概念原理及使用方法解析

    URL Rewrite即URL重写,就是把传入Web的请求重定向到其他URL的过程。URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。比如http:
    2020-11-19
  • 在ASP.NET Core5.0中访问HttpContext的方法步骤

    在ASP.NET Core5.0中访问HttpContext的方法步骤

    ASP.NET Core 应用通过 IHttpContextAccessor 接口及其默认实现 HttpContextAccessor 访问 HttpContext。 只有在需要访问服务内的 HttpContext 时,才有必要使用 IH
    2020-11-19
  • .NET或.NET Core Web APi基于tus协议实现断点续传的示例

    .NET或.NET Core Web APi基于tus协议实现断点续传的示例

    前言 前两天我采用技巧式方案基本实现大文件分片上传,这里只是重点在于个人思路和亲身实践,若在实际生产环境要求比较高的话肯定不行,仍存在一些问题需要深入处理
    2020-11-19

最新评论