使用Topshelf 搭建 Windows 服务

 更新时间:2020年3月6日 10:00  点击:473

Topshelf 是一个用来部署基于.NET Framework 开发的服务的框架。简化服务创建于部署过程,并且支持控制台应用程序部署为服务。本文基于 .net core 控制台应用程序部署为服务(.net Framework 可用)。


1:创建名为 TopshelfDemo 的控制台应用程序。


2:通过 Nuget 安装 Topshelf 包。


3:Toshelf 配置,代码并不多下面都有注释。

try
            {
                // 配置和运行宿主服务
                HostFactory.Run(x =>                                 
                {
                    x.Service<Service>(s =>                       
                    {
                        // 指定服务类型。这里设置为 Service
                        s.ConstructUsing(name => new Service());     
                        // 当服务启动后执行什么
                        s.WhenStarted(tc => tc.Start());              
                        // 当服务停止后执行什么
                        s.WhenStopped(tc => tc.Stop());              
                    });
                    // 服务用本地系统账号来运行
                    x.RunAsLocalSystem();                           
                    // 服务描述信息
                    x.SetDescription("我的项目服务");      
                    // 服务显示名称
                    x.SetDisplayName("ZhuXianFeiServiceShowName");                     
                    // 服务名称
                    x.SetServiceName("ZhuXianFeiService");

                    //调用QuartzServer队列服务用这段
                    /*
                    x.Service(factory =>
                    {
                        QuartzServer server = QuartzServerFactory.CreateServer();
                        server.Initialize();
                        return server;
                    });
                    */


                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

4:安装服务


  确保项目正常生成,然后通过管理员权限打开 cmd 命令窗口,找到项目所在的 Debug 目录,输入命令:文件所在路径\TopshelfDemo.exe install。


  如果是使用 .net core 的小伙伴你会发现 Debug下压根没有 TopshelfDemo.exe ,这不是扯淡呢么,别急往下看。


  由于 .net core 依赖 runtimes 所以我们需要发布以下程序,并且选择独立项目就ok啦。

这时你在布后的路径下就可以找到 TopshelfDemo.exe 啦。

这时服务就安装完毕了,我们可以通过 Windows 服务中查看。

卸载服务命令:TopshelfDemo.exe uninstall 


也可以通过 sc delete MyProjectService 进行删除


好了,到这里就完事儿了,哪里有问题希望大家猛烈拍砖以便修正~


[!--infotagslink--]

相关文章

  • 通过两种方式增加从库――不停止mysql服务

    一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长。另一种是通过xtrabackup工具备份主库,恢复到从库,xtrabackup是物理备份,备份速度快...2015-11-08
  • 安全地关闭MySQL服务的教程

    普通关闭 我的mysql是自己下载的tar包,自己设定安装目录来安装的。停止mysql服务,说来简单,但不知道的话,还真是挠头。在这和mysql入门的同学们共享:)正确方法是,进入mysql的bin目录下,然后执行./mysqladmin -uroot -p shut...2015-11-24
  • vue配置多代理服务接口地址操作

    这篇文章主要介绍了vue配置多代理服务接口地址操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-08
  • AngularJS内建服务$location及其功能详解

    这篇文章主要为大家详细介绍了AngularJS内建服务$location及$location功能,感兴趣的小伙伴们可以参考一下...2016-07-06
  • C#创建Windows服务的实现方法

    这篇文章主要介绍了C#创建Windows服务的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C# 启动 SQL Server 服务的实例

    下面小编就为大家分享一篇C# 启动 SQL Server 服务的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • AngularJS 服务详细讲解及示例代码

    本文主要介绍AngularJS 服务,这里整理了AngularJS 服务的基本知识资料,并附示例代码和实现效果图,有兴趣的小伙伴可以参考下...2016-08-24
  • c#编写webservice服务引用实例分享

    c#编写webservice服务引用实例分享,大家参考使用吧...2020-06-25
  • C#使用windows服务开启应用程序的方法

    这篇文章主要介绍了C#使用windows服务开启应用程序的方法,实例分析了C#操作windows服务开启应用程序所遇到的问题及相关解决技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Springcloud RestTemplate服务调用代码实例

    这篇文章主要介绍了Springcloud RestTemplate服务调用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-08-20
  • ASP.NET Core如何注入多个服务实现类

    这篇文章主要介绍了ASP.NET Core如何注入多个服务实现类的相关资料,需要的朋友可以参考下面文章的具体内容...2021-09-22
  • c#使用windows服务更新站点地图的详细示例

    这篇文章主要介绍了c#使用windows服务更新站点地图的详细示例,需要的朋友可以参考下...2020-06-25
  • 手把手教你在.NET中创建Web服务实现方法

    这篇文章主要介绍了.NET中创建Web服务实现方法,有需要的朋友可以参考一下...2021-09-22
  • C#实现操作windows系统服务(service)的方法

    这篇文章主要介绍了C#实现操作windows系统服务(service)的方法,可实现系统服务的启动和停止功能,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • c#创建windows服务(Windows Services)详细步骤

    这篇文章主要介绍了c#创建windows服务(Windows Services)详细步骤,大家参考使用吧...2020-06-25
  • Win10配置redis服务实现过程详解

    这篇文章主要介绍了Win10配置redis服务实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-01-15
  • C#用Topshelf创建Windows服务的步骤分享

    这篇文章主要给大家介绍了关于C#如何利用Topshelf创建Windows服务的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • 如何使用flask将模型部署为服务

    在某些场景下,我们需要将机器学习或者深度学习模型部署为服务给其它地方调用,本文接下来就讲解使用python的flask部署服务的基本过程。...2021-05-14
  • 通过C#调用cmd来修改服务启动类型

    可以使用System.ServiceProcess.ServiceController这个类允许连接到正在运行或者已停止的服务、对其进行操作或获取有关它的信息但是这个类并没有提供修改服务启动类型的方法,可以通过C#调用cmd来修改...2020-06-25
  • mysql5.7.18解压版启动mysql服务

    这篇文章主要为大家详细介绍了mysql5.7.18解压版启动mysql服务的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-05-09