问题标签 [asp.net-core-hosted-services]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
67 浏览

.net-core - NetCore Host.CreateDefaultBuilder 没有得到开发配置

我正在尝试在控制台应用程序中创建后台任务。

但是我的主机配置不正确,即使我 "ASPNETCORE_ENVIRONMENT":"Development"在我的机器上添加了一个环境变量,它也表示我正在生产中。

我需要这个来在开发时将 UserSecrets 添加到配置中。它在 WebProject 中工作,但我需要控制台应用程序相同。

我究竟做错了什么 ?

这是代码

0 投票
1 回答
770 浏览

c# - 在每个发布天蓝色的asp.net核心中重新启动托管服务(后台服务)

我有一个托管服务,每 3 天发送一封电子邮件我的问题是当我在 azure 中发布服务时重新启动 3 天的计算

这个问题有解决方案吗?例如,我在 azure 星期二发布我希望我在星期五有一封电子邮件,但如果我在 azure 星期三发布另一个时间,它将从星期三开始计算:/

谢谢你

0 投票
1 回答
557 浏览

azure-service-fabric - 在 Service Fabric 中运行后台任务 - ASP.NET Core HostedService 还是使用 StatelessService.RunAsync()?

我们在 Azure 服务结构中运行微服务,并且我们有一个后台任务需要每 15 分钟运行一次以执行一些与数据库相关的操作。我看到 2 个选项。

  1. 使用 StatelessService.RunAsync 方法并在相关微服务之一下实现后台任务。

  2. 使用 HostedService 实现逻辑,并在相关微服务的 startup.cs 中的 ConfigureServices 方法中做 services.AddHostedService。

有什么区别以及首选哪种方式?

谢谢

0 投票
4 回答
26265 浏览

c# - 在 ASP.NET Core 3.1 中,如何在未来的特定日期和时间安排具有托管服务的后台任务(Cron 作业)?

我正在开发一个基于 ASP.NET Core 3.1 的项目,我想向它添加一个特定的功能,以安排将来在帖子作者指定的日期和时间发布帖子(类似于 Wordpress 通过它的 cron 工作)。例如,如果我们从用户那里收到这个日期和时间:

2020-09-07 14:08:07

那么,如何通过使用托管服务只运行一次并更改数据库中的标志并在此之后保存更改来为其安排后台任务?

我读过一些关于它的文章,但他们没有指定日期和时间,只是提到了每 5 秒重复的任务以及类似 cron 表达式的东西,但是,我需要知道的是如何安排后台任务特定日期和时间?

先感谢您。

0 投票
1 回答
3162 浏览

c# - 如何在特定时间触发 .NET Core 3.1 托管服务?

我需要在特定时间触发托管服务,例如。每天13:00。我的典型 ExecuteAsync 方法看起来像这样:

当应用程序启动时,将调用 executeAsync 方法,然后例如每分钟执行一些操作。现在我必须只在特定时间执行这样的操作。有什么方法可以实现这种行为吗?除了粗略计算下一个触发时间之外,我的问题有什么解决方案吗?谢谢你的帮助。

0 投票
0 回答
99 浏览

asp.net-core - 托管 BackgroundService 应用程序中的启动类替换

通常对于 ASP.NET Core 项目,我可以访问IWebHostBuilder创建,在此我可以注册服务和构建配置,然后我可以进入一个Startup类,我可以在其中注入在构建主机时注册的任何服务或配置. 我经常使用这种两阶段方法,因为我通常需要 Startup 中可用的一些服务来完成其他所有内容的注册。

现在我正在开发一个通用主机无头应用程序,添加一个BackgroundServicewith AddHostedService<T>. 在这种情况下没有Startup类,所以似乎我的所有依赖项都必须在创建HostBuilder. 由于缺少第二个注册步骤,我无法使用我的正常服务。

当使用 Generic Host/non-HTTP/BackgroundService/AddHostedService 方法时,如何像在 Web 项目中那样获得依赖注册的两个阶段?

0 投票
1 回答
1258 浏览

c# - 如何从 ExecuteAsync 的代码中取消 dotnet 核心工作进程?

所以我有一个 dotnet 核心工作进程,我想在某些情况下关闭工作进程。

我怎样才能做到这一点?我试图打破循环,但这并没有真正关闭工作进程。

0 投票
1 回答
1266 浏览

asp.net-core - 在现有 ASP.NET Core MVC 应用程序中实现服务工作者

我正在开发一个 ASP.NET Core MVC Web 应用程序,其中我有这两个任务应该作为后台服务运行:

  1. 如果 EndOfSubscription 日期为 == DateTime.Now,则将用户状态设置为“已过期”
  2. 在 EndOfSubscription 日期前 1 个月向该用户发送提醒电子邮件

经过搜索,我发现我可以使用 service worker 来实现这一点。但是我完全困惑如何在需要访问我的模型和数据库的现有 ASP.NET Core MVC Web 应用程序中使用这个服务工作者。

我应该将这些任务隔离在单独的服务工作者项目中吗?但在这种情况下,我应该为两个项目共享同一个数据库吗?

在这种情况下,有人可以指导我采取主要步骤吗?

先感谢您。

0 投票
0 回答
375 浏览

.net - .NET Core 从 HostedService 访问 HttpContext

我正在开发 .Net CORE 3.1 Web API。我们使用 BackgroundHostedService 来处理耗时的操作。我们需要从该托管服务访问 HttpContext,如下所示:

accessor.HttpContext 在这里为空。

我试图找到一个很好的解决方法。其中之一是在 HttpContext 处理中捕获数据并将该数据传递给托管服务。Microsoft 文档中描述了该方法: Access HttpContext in ASP.NET Core (Section - HttpContext access from a background thread)

它工作正常。但是,当您向项目中添加许多不同的 nuget 包并且这些包访问 HttContext(并且所有这些都发生在 HostedService 中)时,进行此类修复会变得非常痛苦

**我的问题:** 有一些更好的修复/解决方法可以在 Http 请求中制作 HttpContext 的“快照”并将该“快照”传递给托管服务?

0 投票
1 回答
2072 浏览

c# - asp.net 核心托管服务中的“计时器 + Task.Run”与“while 循环 + Task.Delay”

我要求后台服务应该在Process每天早上 0:00 运行方法

因此,我的一位团队成员编写了以下代码:

此代码按预期工作。但我不喜欢它同步等待直到Process第一次调用,所以线程被阻塞并且没有执行任何有用的工作(如果我错了,请纠正我)。

我可以像这样进行异步操作并在其中等待:

但是我不确定Task.Run在这里使用是一件好事,因为Process方法应该执行一些 I/O 操作(查询数据库并插入一些数据),并且不建议Task.Run在 ASP.NET 环境中使用。

我重构StartAsync如下:

这让我根本不用定时器MyBackgroundService

我应该使用“timer + Task.Run”的第一种方法还是使用“while loop + Task.Delay”的第二种方法?