. Net'in konsola oturum açmasını engelle?

0

Soru

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 =>
{

});
.net-6.0 .net-core c# ilogger
2021-11-23 19:36:35
1

En iyi cevabı

1

Not

Bu CreateDefaultBuilder yöntem:
...
...
Aşağıdaki günlük sağlayıcılarını ekler:

  • Konsol
  • Ayıklamak
  • EventSource
  • EventLog (yalnızca Windows üzerinde çalışırken)

Varsayılan oluşturucu ayarlarına başvuru

Varsayılan sağlayıcıları açıkça kaldırmanız ve yalnızca istediğinizi eklemeniz gerekir.

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

//...

hostBuilder.ConfigureLogging(logging => {
    logging.ClearProviders();

    //... add my providers here
});

//...

Diğer uzantıların kendi sağlayıcılarını eklemesini önlemek istiyorsanız, hangi kaydedicilerin eklendiğinden emin olmak için günlük yapılandırmasını en son gerçekleştirin.

2021-11-23 20:41:50

Evet, tam olarak olan bu. Neden emin değilim ConfigureLogging varsayıldı logging parametre türdendi HostBuilderContext ama bunu zorlayabildim. ILoggingBuilder. Yardımlarınız için teşekkürler.
Jonathan Wood

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................