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.
- NVL in SQL Server - 2023-11-01
- ¿Que es Cake Build? - 2023-02-22
- #How to fix error: MSB4019: The imported project «Microsoft.Data.Tools.Schema.SqlTasks.targets» was not found - 2023-02-20
1 comments On #HowTo Configurar Autofac en una aplicación AspNetCore 3.0.
Pingback: #HowTo Configurar Autofac en una aplicación AspNetCore 1.x o 2.x. – Happy Devops ()
Comments are closed.