#HowTo Configurar Autofac en una aplicación AspNetCore 3.0.

En este post te voy a explicar como puedes configurar Autofac en un sitio web construido en Asp.Net Core 3.0.

Antes de empezar.

  • La configuración de Autofac en versiones anteriores a la 2.x de AspNet Core es distinta.
  • Use la versión 5.0 de Autofac.
  • El ejemplo se ejecuta en un entorno IIS, puede haber diferencias si tu entorno de ejecución es distinto.
  • Puedes descargar el ejemplo completo aquí.
  • Si estás usando versiones anteriores a DotNetCore 3.x puedes consultar este post.

Para empezar.

Debes descargar los siguientes packages Nuget:

Configurando Autofac en la clase Program.

Debes agregar la siguiente linea de código al método CreateHostBuilder de la clase Program.

using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace HappyDevops.AutofacAndAspnetCore3
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory()) //Necesario para inicializar Autofac
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}

Configurando la composición y los módulos.

En la clase Startup debes de agregar el método ConfigureContainer, en ese método puedes registrar módulos y/o composiciones antes de que se ejecute el ContainerBuilder.

using Autofac;
using HappyDevops.AutofacAndAspnetCore3.IoC.Modules;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace HappyDevops.AutofacAndAspnetCore3
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
//Metodo para registrar modulos y hacer composiciones.
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterModule<ModuleExample>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection()
.UseRouting()
.UseAuthorization()
.UseEndpoints(endpoints => { endpoints.MapControllers(); });
}
}
}

Conclusiones.

Los inyectores de dependencias son ciudadanos de primera clase en AspNetCore. No es necesario que te preocupes por mantener instancias del contenedor disponibles o dentro de singletones. La herramienta y DotNet se encargarán de ello.

 

Gustavo Sánchez

Soy especialista en escribir software de calidad. Mediante el uso de marcos de trabajo, técnicas y automatización de procesos he podido reducir los costes operativos de los sistemas de la empresa. Sistemas confiables y adaptables producen clientes felices.

1 comments On #HowTo Configurar Autofac en una aplicación AspNetCore 3.0.

Comments are closed.

Site Footer