.Net Core 3.1
Desafortunadamente, para ASP.NET Core 3.0, la situación es nuevamente un poco diferente. Las plantillas predeterminadas usan HostBuilder
(en lugar de WebHostBuilder
), que configura un nuevo host genérico que puede albergar varias aplicaciones diferentes, sin limitarse a aplicaciones web. Parte de este nuevo host es también la eliminación del segundo contenedor de inyección de dependencia que existía anteriormente para el host web. En última instancia, esto significa que no podrá inyectar ninguna dependencia aparte de IConfiguration
en la Startup
clase. Por lo tanto, no podrá iniciar sesión durante el ConfigureServices
método. Sin embargo, puede inyectar el registrador en el Configure
método e iniciar sesión allí:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
}
Si es absolutamente necesario iniciar sesión ConfigureServices
, puede continuar usando el WebHostBuilder
que creará el legado WebHost
que puede inyectar el registrador en la Startup
clase. Tenga en cuenta que es probable que el servidor web se elimine en algún momento en el futuro. Por lo tanto, debe intentar encontrar una solución que funcione para usted sin tener que iniciar sesión ConfigureServices
.
.NET Core 2.x
Esto ha cambiado significativamente con el lanzamiento de ASP.NET Core 2.0. En ASP.NET Core 2.x, el registro se crea en el generador de host. Esto significa que el registro está disponible a través de DI de forma predeterminada y se puede inyectar en la Startup
clase:
public class Startup
{
private readonly ILogger<Startup> _logger;
public IConfiguration Configuration { get; }
public Startup(ILogger<Startup> logger, IConfiguration configuration)
{
_logger = logger;
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
_logger.LogInformation("ConfigureServices called");
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
_logger.LogInformation("Configure called");
}
}