Preveni .NET din exploatarea la consola?

0

Problema

Am pus în aplicare de injectare dependență în cererea mea. Și mi-servicii de configurare, după cum urmează.

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>();

Toate astea funcționează bine, cu excepția faptului că acum cadrul este exploatarea la consola, inclusiv conținutul de întrebări trimise la baza de date.

Cumva interne logare a fost activat dar nu văd unde am activat.

Cum pot preveni .NET din exploatarea la ecran?

Notă: Logger este un exemplu din propria mea logare clasa ConsoleLogger. Această clasă nu pune în aplicare ILogger sau de a folosi orice altceva de la .NET. Este pur și simplu o clasă personalizat care, de asemenea, jurnalele de la consolă și un fișier. Exploatarea de la acest logger este de lucru bine. Și am confirmat .NET jurnalele nu sunt trimise la această clasă.

Update:

Aici e codul meu care configurează gazdă.

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();
}

Și aici este codul pe care îl numește.

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

Cel mai bun răspuns

1

Notă

La CreateDefaultBuilder metoda:
...
...
Adaugă următoarele logare furnizori:

  • Consola
  • Depanare
  • EventSource
  • EventLog (numai atunci când rulează pe Windows)

Referință Default constructor setări

Ai nevoie pentru a elimina explicit implicit furnizorii și adăugați-le doar pe cele dorite.

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

//...

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

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

//...

Rețineți că, dacă doriți, pentru a evita alte extension adăugarea de propriile lor furnizori, apoi efectuați configurare de logare trecută, astfel încât sunteți sigur despre furnizori de bustean care au fost adăugate.

2021-11-23 20:41:50

Da, acest lucru este exact ceea ce se întâmplă. Nu sunt sigur de ce ConfigureLogging și-a asumat logging parametrul de tip HostBuilderContext dar am fost capabil să-l forțeze să fie ILoggingBuilder. Multumesc pentru ajutor.
Jonathan Wood

În alte limbi

Această pagină este în alte limbi

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