.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 IConfigurationin die StartupKlasse einfügen können . Sie können sich also während der ConfigureServicesMethode nicht anmelden . Sie können den Logger jedoch in die ConfigureMethode 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 , WebHostBuilderdie das Vermächtnis wird erstellen , WebHostdie den Logger in die injizieren StartupKlasse. 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 StartupKlasse 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");
// …
}
}