【发布时间】:2021-09-27 07:59:59
【问题描述】:
我在 ASP.NET Core 3.1 REST API 中运行 Autofac.Extensions.DependencyInjection 7.1.0。
我有一个BackgroundService 类并配置为作为SingleInstance 运行。
我的问题是 StartAsync 永远不会被调用。但是配置没有 SingleInstance 语句,StartAsync 被调用。
这是一个错误,配置不正确还是误解?
注册:
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AsImplementedInterfaces()
.Except<BackgroundSendMailService>(ct => ct.As<IBackgroundSendMailService>()
.SingleInstance())
.PublicOnly();
后台服务:
using Microsoft.Extensions.Hosting;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace TheNameSpace
{
public interface IBackgroundSendMailService : IHostedService
{
Task SendMail(List<EmailModel> emails);
}
public class BackgroundSendMailService : BackgroundService, IBackgroundSendMailService
{
public BackgroundSendMailService()
{
}
public Task SendMail(List<EmailModel> emails)
{
return Task.CompletedTask;
}
public override Task StartAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
public override Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
return Task.CompletedTask;
}
}
}
【问题讨论】:
标签: autofac autofac-configuration