我在 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;
}
}
}