.Net Core 3.1
Thật không may, đối với ASP.NET Core 3.0, tình hình lại khác một chút. Các mẫu mặc định sử dụng HostBuilder
(thay vì WebHostBuilder
) để thiết lập một máy chủ lưu trữ chung mới có thể lưu trữ một số ứng dụng khác nhau, không giới hạn ở các ứng dụng web. Một phần của máy chủ mới này cũng là việc loại bỏ vùng chứa chèn phụ thuộc thứ hai đã tồn tại trước đó cho máy chủ web. Điều này cuối cùng có nghĩa là bạn sẽ không thể đưa bất kỳ phụ thuộc nào ngoài lớp IConfiguration
vào Startup
lớp. Vì vậy, bạn sẽ không thể đăng nhập trong quá trình ConfigureServices
này. Tuy nhiên, bạn có thể đưa trình ghi nhật ký vào Configure
phương thức và ghi vào đó:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
}
Nếu bạn thực sự cần đăng nhập ConfigureServices
, thì bạn có thể tiếp tục sử dụng WebHostBuilder
cái sẽ tạo ra kế thừa WebHost
có thể đưa trình ghi nhật ký vào Startup
lớp. Lưu ý rằng có khả năng máy chủ web sẽ bị xóa vào một thời điểm nào đó trong tương lai. Vì vậy, bạn nên cố gắng tìm một giải pháp phù hợp với mình mà không cần phải đăng nhập ConfigureServices
.
.NET Core 2.x
Điều này đã thay đổi đáng kể với việc phát hành ASP.NET Core 2.0. Trong ASP.NET Core 2.x, ghi nhật ký được tạo tại trình tạo máy chủ. Điều này có nghĩa là ghi nhật ký có sẵn thông qua DI theo mặc định và có thể được đưa vào Startup
lớp:
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");
}
}