.Net Core 3.1
На жаль, щодо ASP.NET Core 3.0 ситуація знову трохи інша. Шаблони за замовчуванням використовують HostBuilder
(замість WebHostBuilder
), який встановлює новий загальний хост, який може розміщувати кілька різних програм, не обмежуючись веб-програмами. Частиною цього нового хоста є також видалення другого контейнера для введення залежностей, який раніше існував для веб-хоста. Це в кінцевому рахунку означає, що ви не зможете вводити будь-які залежності крім класу IConfiguration
в Startup
клас. Таким чином, ви не зможете ввійти в систему під час ConfigureServices
методу. Однак ви можете ввести реєстратор у Configure
метод і ввійти туди:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
}
Якщо вам абсолютно потрібно увійти в систему ConfigureServices
, тоді ви можете продовжувати використовувати те, WebHostBuilder
що створить спадщину, WebHost
яка може ввести реєстратор у Startup
клас. Зауважте, що, швидше за все, веб-хост у певний момент буде видалено. Тож вам слід спробувати знайти рішення, яке вам підходить, без необхідності входити в систему ConfigureServices
.
.NET Core 2.x
Це суттєво змінилось із виходом ASP.NET Core 2.0. У ASP.NET Core 2.x ведення журналу створюється у конструкторі хостів. Це означає, що ведення журналу за замовчуванням доступне через DI і може бути введено в Startup
клас:
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");
}
}