Worker Service in ASP .NET Core
介绍提到 ASP.NET Core,我们多半会想到 ASP.NET MVC、ASP.NET Web API、Razor page 及?Blazor。随着 .NET Core 3.0 的推出,今天会介绍一个全新推出的功能:Work Service 。我们可以在 Visual Studio 2019 中通过预定的项目模版快速创建一个 WorkService项目。 或者使用 .NET CLI: > dotnet new worker -o myWorkServiceProject -o 是一个可选标志,用于指定项目输出文件夹名称。关于 Work Service 模版的更多信息可以参考:WorkService。 示例首先我们创建一个 .NET Core 控制台程序。 public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices(services => { services.AddHostedService<Worker>(); }); } ? 注意事项:
Worker 类继承了 BackgroundService 下面贴出代码: public class Worker : BackgroundService { // ... protected override async Task ExecuteAsync(CancellationToken stoppingToken) { // do stuff here } } ? 我们可以通过 override ExecuteAsync 来完成自己要做的事情。 接下来我们添加一个日志组件,用于记录日志: using Microsoft.Extensions.Logging;
? public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureLogging(loggerFactory => loggerFactory.AddEventLog()) .ConfigureServices(services => { services.AddHostedService<Worker>(); }); ? 添加完日志组件后,我们可以在 Worker 类的构造函数中注入日志记录器: private readonly ILogger<Worker> _logger; public Worker(ILogger<Worker> logger) { this._logger = logger; } ? 运行注意:我们需要以管理员模式打开 Powershell 或 cmd 窗口。在运行之前我们需要在入口添加或确认有对 UseWindowsService() [早期此方法的名称是:UseServiceBaseLifetime()]的调用: public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices(services => { services.AddHostedService<Worker>(); }); 可通过给 UseWindowsService 方法传递参数设置 Windows 服务。 ? 发布dotnet publish -o C:pathtoprojectpubfolder ? 将程序发布到 pubfolder 文件夹中以后,我们开始通过 sc.exe 创建 Windows 服务。 > C:WindowsSystem32sc create MyServiceName binPath=C:pathtoprojectpubfolderMyProjectName.exe ? 服务创建完成后,它会出现在Windows 服务列表中,当我们手动启动服务时,应该会看到日志的输出: info: WorkerServiceSample.Worker[0] Making doc 1 at: 06/09/2019 00:09:52 -04:00 Making your document... info: WorkerServiceSample.Worker[0] Making doc 2 at: 06/09/2019 00:10:05 -04:00 Making your document... info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development ?注意:在非 Windows 平台上调用 UseWindowsService 方法也是不会报错的,非 Windows 平台会忽略此调用。 ?以上就是介绍的全部内容了。如果想用 .NET Core 开发 Windows 服务的,不防试试看。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – AntFarm反模式 – 避免的策略,解毒帮助治愈
- asp.net-mvc – ASP.NET MVC4,带有webforms Default.aspx作
- asp.net – 动态设置超链接控件的navigationurl属性内联
- 更改JqGrid列的顺序
- .NET Core多平台开发体验[2]: Mac OS X
- asp.net-mvc – ASP.NET MVC文件名下划线
- Razor in ASP.NET MVC 3.0
- asp.net-mvc – 隐藏日期时间的ASP.NET MVC格式
- asp.net-core – 实体框架核心 – 相当于IN子句
- asp.net – 如何使用JwtSecurityTokenHandler和JWKS端点验证