日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

Worker Service in ASP .NET Core

發(fā)布時(shí)間:2025/3/21 asp.net 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Worker Service in ASP .NET Core 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

介紹

提到 ASP.NET Core,我們多半會(huì)想到 ASP.NET MVC、ASP.NET Web API、Razor page 及?Blazor。隨著 .NET Core 3.0 的推出,今天會(huì)介紹一個(gè)全新推出的功能:Work Service 。我們可以在 Visual Studio 2019 中通過(guò)預(yù)定的項(xiàng)目模版快速創(chuàng)建一個(gè) WorkService項(xiàng)目。

或者使用 .NET CLI:

> dotnet new worker -o myWorkServiceProject

-o 是一個(gè)可選標(biāo)志,用于指定項(xiàng)目輸出文件夾名稱(chēng)。關(guān)于 Work Service 模版的更多信息可以參考:WorkService。  

示例

首先我們創(chuàng)建一個(gè) .NET Core 控制臺(tái)程序。

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>();});}

?

注意事項(xiàng):

  • 從 ASP.NET Core 3.0 起 WebHost 將被更通用的 Host 取代。
  • CreateHostBuilder 創(chuàng)建主機(jī)并在 ConfigureServices 中調(diào)用 AddHostedService<T> 來(lái)配置它。

Worker 類(lèi)繼承了 BackgroundService 下面貼出代碼:

public class Worker : BackgroundService {// ...protected override async Task ExecuteAsync(CancellationToken stoppingToken){// do stuff here } }

?

我們可以通過(guò) override ExecuteAsync 來(lái)完成自己要做的事情。

接下來(lái)我們添加一個(gè)日志組件,用于記錄日志:

using Microsoft.Extensions.Logging;

?

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

?

添加完日志組件后,我們可以在 Worker 類(lèi)的構(gòu)造函數(shù)中注入日志記錄器:

private readonly ILogger<Worker> _logger;public Worker(ILogger<Worker> logger) {this._logger = logger; }

?

運(yùn)行

注意:我們需要以管理員模式打開(kāi) Powershell 或 cmd 窗口。在運(yùn)行之前我們需要在入口添加或確認(rèn)有對(duì) UseWindowsService() [早期此方法的名稱(chēng)是:UseServiceBaseLifetime()]的調(diào)用:

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

可通過(guò)給 UseWindowsService 方法傳遞參數(shù)設(shè)置 Windows 服務(wù)。

?

發(fā)布

dotnet publish -o C:\path\to\project\pubfolder

?

將程序發(fā)布到 pubfolder 文件夾中以后,我們開(kāi)始通過(guò) sc.exe 創(chuàng)建 Windows 服務(wù)。

> C:\Windows\System32\sc create MyServiceName binPath=C:\path\to\project\pubfolder\MyProjectName.exe

?

服務(wù)創(chuàng)建完成后,它會(huì)出現(xiàn)在Windows 服務(wù)列表中,當(dāng)我們手動(dòng)啟動(dòng)服務(wù)時(shí),應(yīng)該會(huì)看到日志的輸出:

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 平臺(tái)上調(diào)用 UseWindowsService 方法也是不會(huì)報(bào)錯(cuò)的,非 Windows 平臺(tái)會(huì)忽略此調(diào)用。

?以上就是介紹的全部?jī)?nèi)容了。如果想用 .NET Core 開(kāi)發(fā) Windows 服務(wù)的,不防試試看。

轉(zhuǎn)載于:https://www.cnblogs.com/jRoger/p/11007826.html

總結(jié)

以上是生活随笔為你收集整理的Worker Service in ASP .NET Core的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。