我通过在应用程序启动事件中注册一些代码来解决它。
在配置方法中:
appLifetime.ApplicationStarted.Register(() =>
{
InitializeSingletonObjects(app, loggerFactory);
});
此时一切都已正确初始化,您可以在 InitializeSingletonObjects 中做任何您想做的事情。就我而言,这就是我所做的。
private void InitializeSingletonObjects(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
// email template processor
var emailRepository = app.ApplicationServices.GetService<IEmailRepository>();
IEmailTemplateProcessor emailTemplateProcessor = app.ApplicationServices.GetService<IEmailTemplateProcessor>();
string containerName = appConfiguration.AzureBlobStorage.BlobStorageContainerEmailTemplates;
var emailTemplates = emailRepository.GetEmailTemplates(true);
emailTemplateProcessor.Initialize(containerName, emailTemplates);
}
有关 IApplicationLifetime 的更多信息,请访问https://www.khalidabuhakmeh.com/looking-at-asp-net-cores-iapplicationlifetime