gpt4 book ai didi

c# - .NET Core 中 HostingEnvironment.QueueBackgroundWorkItem 的替代解决方案

转载 作者:行者123 更新时间:2023-12-02 03:03:37 29 4
gpt4 key购买 nike

我们正在使用 .NET Core Web Api,并寻找一种轻量级解决方案来将具有可变强度的请求记录到数据库中,但不希望客户端等待保存过程。
不幸的是,dnx 中没有实现 HostingEnvironment.QueueBackgroundWorkItem(..),并且 Task.Run(..) 并不安全。
有什么优雅的解决方案吗?

最佳答案

正如@axelheer提到的IHostedService是 .NET Core 2.0 及更高版本的方法。

我需要一个轻量级的类似 ASP.NET Core 的 HostingEnvironment.QueueBackgroundWorkItem 替代品,所以我写了 DalSoft.Hosting.BackgroundQueue其中使用.NET Core的2.0 IHostedService .

PM> 安装包 DalSoft.Hosting.BackgroundQueue

在 ASP.NET Core Startup.cs 中:

public void ConfigureServices(IServiceCollection services)
{
services.AddBackgroundQueue(onException:exception =>
{

});
}

要对后台任务进行排队,只需将 BackgroundQueue 添加到 Controller 的构造函数中并调用 Enqueue

public EmailController(BackgroundQueue backgroundQueue)
{
_backgroundQueue = backgroundQueue;
}

[HttpPost, Route("/")]
public IActionResult SendEmail([FromBody]emailRequest)
{
_backgroundQueue.Enqueue(async cancellationToken =>
{
await _smtp.SendMailAsync(emailRequest.From, emailRequest.To, request.Body);
});

return Ok();
}

关于c# - .NET Core 中 HostingEnvironment.QueueBackgroundWorkItem 的替代解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36945253/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com