如何在应用程序启动时从模块运行任务
Startup类用于初始化服务和中间件。它们在租户初始化时调用。
接口OrchardCore.Modules.IModularTenantEvents提供了一种方法来定义首次命中租户(租户激活)时将执行的用户代码。
所有租户都是延迟加载的,这意味着当应用程序启动时,不会调用事件处理程序。取而代之的是,在处理第一个请求时调用它们。
在下面的示例中,类MyStartupTaskService继承自ModularTenantEvents以实现IModularTenantEvents。
using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using OrchardCore.Modules; public class MyStartupTaskService : ModularTenantEvents { private readonly ILogger<MyStartupTaskService> _logger; public MyStartupTaskService(ILogger<MyStartupTaskService> logger) { _logger = logger; } public override Task ActivatingAsync() { _logger.LogInformation("A tenant has been activated."); return Task.CompletedTask; } }
然后在模块的Startup.cs文件的ConfigureServices()方法上注册该类。
services.AddScoped<IModularTenantEvents, MyStartupTaskService>();
说明:ActivatingAsync事件按其注册顺序调用,该顺序派生自模块依赖关系图。ActivatedAsync事件以相反的顺序调用。
当从终端运行时,您应该在处理第一个请求后看到如下输出:
info: MyStartupTaskService[0] A tenant has been activated.

浙公网安备 33010602011771号