.Net Core 3.1
Niestety w przypadku ASP.NET Core 3.0 sytuacja jest nieco inna. Domyślne szablony używają HostBuilder(zamiast WebHostBuilder), które konfiguruje nowy ogólny host, który może obsługiwać kilka różnych aplikacji, nie ograniczając się do aplikacji internetowych. Częścią tego nowego hosta jest również usunięcie drugiego kontenera iniekcji zależności, który wcześniej istniał dla hosta internetowego. Ostatecznie oznacza to, że nie będziesz w stanie wstrzyknąć IConfigurationdo Startupklasy żadnych zależności poza . Więc nie będziesz mógł zalogować się podczas ConfigureServicesmetody. Możesz jednak wstrzyknąć rejestrator do Configuremetody i zalogować się tam:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
}
Jeśli absolutnie musisz się zalogować ConfigureServices, możesz nadal używać programu, WebHostBuilderktóry utworzy starszą wersję, WebHostktóra może wstrzyknąć rejestrator do Startupklasy. Pamiętaj, że jest prawdopodobne, że usługodawca hostingowy zostanie usunięty w pewnym momencie w przyszłości. Dlatego powinieneś spróbować znaleźć rozwiązanie, które będzie dla Ciebie odpowiednie, bez konieczności logowania się ConfigureServices.
.NET Core 2.x
Zmieniło się to znacznie wraz z wydaniem ASP.NET Core 2,0. W ASP.NET Core 2.x rejestrowanie jest tworzone w konstruktorze hosta. Oznacza to, że rejestrowanie jest domyślnie dostępne przez DI i można je wstrzyknąć do Startupklasy:
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");
}
}