首页 > 系统相关 >使用.NET Core创建Windows服务

使用.NET Core创建Windows服务

时间:2023-11-13 19:14:24浏览次数:38  
标签:Core 服务 Windows 创建 MyWorkerService NET

使用.NET Core创建Windows服务

1. 创建一个新的Worker Service项目

图片

打开命令行工具(例如:PowerShell、CMD、或者终端),然后输入以下命令创建一个新的Worker Service项目:

dotnet new worker -n MyWorkerService

这个命令将会创建一个名为"MyWorkerService"的新项目。

2. 添加必要的NuGet包

对于Windows服务,我们需要添加Microsoft.Extensions.Hosting.WindowsServices NuGet包到我们的项目。在项目目录下(MyWorkerService),运行以下命令:

dotnet add package Microsoft.Extensions.Hosting.WindowsServices

这个软件包将为我们提供所需的扩展方法来注册Windows服务。

图片

3. 配置HostBuilder

现在我们需要设置.NET Core host以便在Windows服务中运行。更新Program.cs文件如下:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseWindowsService()
        .ConfigureServices((hostContext, services) =>
        {
            services.AddHostedService<Worker>();
        });

UseWindowsService()方法是Microsoft.Extensions.Hosting.WindowsServices库提供的,它可以让应用程序在Windows服务中运行。

4. 定义你的服务逻辑

在这个示例中,服务逻辑被定义在Worker类中。你可以根据你的需求修改它。

5. 发布你的服务

你可以通过运行以下命令进行发布:

dotnet publish --configuration Release --output ./publish

该命令将会创建一个发布目录,并将所有必要的文件放入该目录。

6. 安装和运行服务

在你的服务机器上,打开管理员模式的命令提示符,然后运行以下命令来安装并启动服务:

sc create MyWorkerService binPath= "C:\path\to\your\service\MyWorkerService.exe"
sc start MyWorkerService

请确保替换 "C:\path\to\your\service\MyWorkerService.exe"为你实际发布服务的路径。

图片

图片

注意事项

  • 如果你的服务需要访问网络资源,请确保Windows服务有正确的访问权限。
  • 所有非处理过的异常都将导致服务停止。确保你的代码有适当的错误处理。
  • 在服务中运行的长时间操作必须是异步的,以防止线程阻塞。
  • 不要在OnStart()方法中放入太多初始化代码。如果需要较长时间来启动服务,Windows可能会认为服务未能正确启动。


原文链接:https://mp.weixin.qq.com/s/bH2f6Tjy_MX51flXxKTgFw

标签:Core,服务,Windows,创建,MyWorkerService,NET
From: https://www.cnblogs.com/sunny3158/p/17829873.html

相关文章

  • .NET Web API 详解
    当涉及到.NETWebAPI时,这是Microsoft提供的一个框架,用于构建可以被各种客户端消费的HTTP服务,包括浏览器、移动设备和桌面应用程序。它是ASP.NET平台的一部分,旨在简化构建RESTfulWebAPI的过程。以下是.NETWebAPI的一些关键概念和特性:RESTful服务:WebAPI建立在Representational......
  • Windows Privileges一览
    权限升级是指对IT系统访问权限有限的用户可以增加其访问权限的范围和规模。对于受信任的用户,权限升级允许在有限的时间内扩大访问权限以完成特定任务。例如,用户可能需要访问权限来解决技术问题、运行季度财务报告或安装程序。WindowsPrivileges一览有一天我发现了这个有......
  • VMware Workstation 17.5 Pro Unlocker & OEM BIOS for Windows
    VMwareWorkstation17.5ProUnlocker&OEMBIOSforWindows在Windows上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org桌面HypervisorVMwareWorkstationProVMwar......
  • Intel黑客松大赛——EfficientNet分类
    1.模型介绍为什么选用EfficientNet为什么选用EfficientNet呢?EfficientNet是一种高效的卷积神经网络架构,具有以下优势:更高的准确率:EfficientNet在ImageNet数据集上取得了更好的准确率,相比其他网络结构,参数更少,模型更小,但是性能更好。更高的计算效率:EfficientNet在保持准确率的......
  • 使用PageHelper.startPage时 net.sf.jsqlparser.parser.ParseException: Encountered
    使用PageHelper.startPage时net.sf.jsqlparser.parser.ParseException:Encountered解决方案对比代码:原来的写法:PageHelper.startPage(page,size,order);List<xxx>list=xxxMapperExt.selectxxx(id,type);修改之后:PageHelper.startPage(page,size);List<xxx>list=xxxM......
  • 2.1 Windows驱动开发:内核链表与结构体
    在Windows内核中,为了实现高效的数据结构操作,通常会使用链表和结构体相结合的方式进行数据存储和操作。内核提供了一个专门用于链表操作的数据结构LIST_ENTRY,可以用来描述一个链表中的每一个节点。使用链表来存储结构体时,需要在结构体中嵌入一个LIST_ENTRY类型的成员变量,用来连接......
  • Quartz.Net 在IIS下不执行或多次执行解决
    不执行解决方法在IIS中打开程序对应的应用程序池【高级设置】1.设置应用程序池【回收】->【固定时间间隔(分钟)】为0。2.设置应用程序池【进程模型】->【闲置超时时间(分钟)】为0。执行多次解决方法在IIS中打开程序对应的应用程序池【高级设置】1.设置应用程序池【进程模型】->【......
  • 使用nvm使Windows电脑支持多个Nodejs版本
     Node.js一台电脑只能装一个版本,但是有时候开发项目会用到不同版本的Node.js,卸载再装是很麻烦的,而nvm就是解决这个问题的,有了它就可以在一个电脑上安装多个Node.js版本,并且在不同版本之间切换使用。 下载github下载地址:https://github.com/coreybutler/nvm-windows/releases......
  • 和 ChatGPT 聊聊 .NET 编译和执行背后的那些事儿
    1.NET编译、构建、执行涉及到哪些概念在.NET编译、构建和执行中,涉及到以下概念:C#或VisualBasic.NET等编程语言:这些是.NETFramework使用的主要编程语言。开发人员使用这些语言编写应用程序和代码。Roslyn:Roslyn是.NET编译器平台,提供编译器和代码分析的API。......
  • .Net实验一 语言基础
    一、实验目的熟悉VisualStido.NET实验环境;掌握控制台程序的编写方法;掌握C#程序设计语言的语法基础;掌握控制语句和数组的使用。二、实验要求根据题目要求,编写C#程序,并将程序代码和运行结果写入实验报告。三、实验内容编写一个控制台应用程序,输入三角形或者长方形边长,计......