.Net Core 3.1
Leider ist die Situation für ASP.NET Core 3.0 wieder etwas anders. Die Standardvorlagen verwenden den HostBuilder
(anstelle des WebHostBuilder
), der einen neuen generischen Host einrichtet, der mehrere verschiedene Anwendungen hosten kann, nicht nur Webanwendungen. Teil dieses neuen Hosts ist auch das Entfernen des zweiten Abhängigkeitsinjektionscontainers, der zuvor für den Webhost vorhanden war. Dies bedeutet letztendlich, dass Sie keine Abhängigkeiten außer der IConfiguration
in die Startup
Klasse einfügen können . Sie können sich also während der ConfigureServices
Methode nicht anmelden . Sie können den Logger jedoch in die Configure
Methode einfügen und dort protokollieren:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
// …
}
Wenn Sie unbedingt brauchen innerhalb anmelden ConfigureServices
, dann können Sie auch weiterhin die verwenden , WebHostBuilder
die das Vermächtnis wird erstellen , WebHost
die den Logger in die injizieren Startup
Klasse. Beachten Sie, dass der Webhost wahrscheinlich zu einem späteren Zeitpunkt entfernt wird. Sie sollten also versuchen, eine Lösung zu finden, die für Sie funktioniert, ohne sich anmelden zu müssen ConfigureServices
.
.NET Core 2.x.
Dies hat sich mit der Veröffentlichung von ASP.NET Core 2.0 erheblich geändert. In ASP.NET Core 2.x wird die Protokollierung beim Host Builder erstellt. Dies bedeutet, dass die Protokollierung standardmäßig über DI verfügbar ist und in die Startup
Klasse eingefügt werden kann :
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");
// …
}
}