将 Autofac 与 ASP.Net Core 3.1 通用主机“Worker Service"一起使用应用 [英] Using Autofac with ASP.Net Core 3.1 generic host "Worker Service" application

查看:29
本文介绍了将 Autofac 与 ASP.Net Core 3.1 通用主机“Worker Service"一起使用应用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 ASP.Net Core 应用程序中,使用以下命令可以轻松配置 Autofac:

In an ASP.Net Core application, its easy to configure Autofac using:

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();
  }
}

但在通用主机中,Worker 类没有任何对 ConfigureServicesConfigureContainer 的内置支持.

But in a generic host, the Worker class does not have any built in support for ConfigureServices and ConfigureContainer.

如何为非 ASP.Net Core 应用程序中的通用主机启用相同的功能?

How do I enable the same for a generic host in a non ASP.Net Core application?

推荐答案

通用主机构建器 确实具有对 ConfigureContainerConfigureServices

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

        builder.RegisterType<MyDependencyType>();

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

        services.AddHostedService<Worker>();

        //...
    })
    .ConfigureWebHostDefaults(webHostBuilder => {
        webHostBuilder
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>();
    })
    .Build();

host.Run();

参考 .NET 通用主机

这篇关于将 Autofac 与 ASP.Net Core 3.1 通用主机“Worker Service"一起使用应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆