.Net Çekirdek 3.1
Ne yazık ki ASP.NET Core 3.0 için durum yine biraz farklı. Varsayılan şablonlar , web uygulamalarıyla sınırlı olmayan birkaç farklı uygulamayı barındırabilen yeni bir genel ana bilgisayar kuran HostBuilder(yerine WebHostBuilder) öğesini kullanır . Bu yeni ana bilgisayarın bir parçası, daha önce web barındırıcısı için var olan ikinci bağımlılık ekleme kabının kaldırılmasıdır. Bu, sonuçta IConfiguration, Startupsınıfın dışında herhangi bir bağımlılığı enjekte edemeyeceğiniz anlamına gelir . Böylece ConfigureServicesyöntem sırasında oturum açamayacaksınız . Bununla birlikte, kaydediciyi Configureyönteme enjekte edebilir ve orada oturum açabilirsiniz:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILogger<Startup> logger)
{
logger.LogInformation("Configure called");
}
Kesinlikle giriş yapmanız gerekiyorsa , günlükçüyü sınıfa enjekte edebilecek mirası oluşturacak olanı ConfigureServiceskullanmaya devam edebilirsiniz . Web barındırıcısının gelecekte bir noktada kaldırılmasının muhtemel olduğunu unutmayın. Bu nedenle, oturum açmanıza gerek kalmadan sizin için çalışan bir çözüm bulmaya çalışmalısınız .WebHostBuilderWebHostStartupConfigureServices
.NET Core 2.x
Bu, ASP.NET Core 2.0'ın yayımlanmasıyla önemli ölçüde değişti. ASP.NET Core 2.x'te, ana bilgisayar oluşturucuda günlük oluşturulur. Bu, günlük kaydının varsayılan olarak DI aracılığıyla kullanılabileceği ve Startupsınıfa eklenebileceği anlamına gelir :
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");
}
}