web-dev-qa-db-fra.com

Utilisation d'Autofac avec l'application générique hôte "Worker Service" ASP.Net Core 3.1

Dans une application ASP.Net Core, il est facile de configurer Autofac en utilisant:

public class Program
{
  public static void Main(string[] args)
  {
    // ASP.NET Core 3.0+:
    // The UseServiceProviderFactory call attaches the
    // Autofac provider to the generic hosting mechanism.
    var Host = Host.CreateDefaultBuilder(args)
        .UseServiceProviderFactory(new AutofacServiceProviderFactory())
        .ConfigureWebHostDefaults(webHostBuilder => {
          webHostBuilder
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>();
        })
        .Build();

    Host.Run();
  }
}

public class Startup
{
  // Omitting extra stuff so you can see the important part...
  public void ConfigureServices(IServiceCollection services)
  {
    // Add controllers as services so they'll be resolved.
    services.AddMvc().AddControllersAsServices();
  }

  public void ConfigureContainer(ContainerBuilder builder)
  {
    // If you want to set up a controller for, say, property injection
    // you can override the controller registration after populating services.
    builder.RegisterType<MyController>().PropertiesAutowired();
  }
}

Mais dans un hôte générique, la classe Worker n'a pas de support intégré pour ConfigureServices et ConfigureContainer.

Comment activer la même chose pour un hôte générique dans une application non ASP.Net Core?

3
Satyajit

Le générateur d'hôte générique a un support intégré pour ConfigureContainer et ConfigureServices

var Host = Host.CreateDefaultBuilder(args)
    .UseServiceProviderFactory(new AutofacServiceProviderFactory())
    .ConfigureContainer<ContainerBuilder>(builder => {

        builder.RegisterType<MyDependencyType>();

        //...
    })
    .ConfigureServices(services => {

        services.AddHostedService<Worker>();

        //...
    })
    .Build();

Host.Run();

Référence . NET Generic Host

5
Nkosi