Uygulamamda bağımlılık enjeksiyonu uyguladım. Ve hizmetleri aşağıdaki gibi yapılandırıyorum.
IConfiguration configuration = context.Configuration;
services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});
services.ConfigureRailIncApi(configuration);
services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));
services.AddSingleton(configuration);
services.AddSingleton(Logger);
services.AddSingleton<Application>();
services.AddSingleton<ServiceManager>();
Tüm bunlar, çerçevenin veritabanına gönderilen sorguların içeriği de dahil olmak üzere konsola giriş yapması dışında iyi çalışıyor.
Bir şekilde iç günlüğe kaydetme etkinleştirildi ama etkin ettiğimi bilmiyorum.
. Net'in ekrana oturum açmasını nasıl önleyebilirim?
Not: Logger
kendi günlük sınıfımın bir örneği mi ConsoleLogger
. Bu sınıf uygulamıyor ILogger
ya da .net'ten başka bir şey kullanın. Sadece konsola ve bir dosyaya da giriş yapan özel bir sınıftır. Bu kaydediciden günlüğe kaydetme iyi çalışıyor. Ve. NET günlüklerinin bu sınıfa gönderilmediğini doğruladım.
Güncelleştirme:
İşte ana bilgisayarı yapılandıran kodum.
public void Configure(string[] args, Action< HostBuilderContext, IServiceCollection> configureServices, Action<IHostBuilder> configureHost)
{
IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);
hostBuilder.ConfigureServices((context, services) =>
{
services.AddSingleton(this);
configureServices(context, services);
});
configureHost(hostBuilder);
AppHost = hostBuilder.Build();
}
Ve işte onu çağıran kod.
ApplicationServices appServices = new();
appServices.Configure(args, (context, services) =>
{
IConfiguration configuration = context.Configuration;
services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});
services.ConfigureRailIncApi(configuration);
services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));
services.AddSingleton(configuration);
services.AddSingleton(Logger);
services.AddSingleton<Application>();
services.AddSingleton<ServiceManager>();
},
builder =>
{
});
ConfigureLogging
varsayıldılogging
parametre türdendiHostBuilderContext
ama bunu zorlayabildim.ILoggingBuilder
. Yardımlarınız için teşekkürler.