Zapobiegać.SIEĆ od wejścia w konsoli?

0

Pytanie

Ja umieściłem wdrożenie zależności w aplikacji. I ja ustawiam usługi w następujący sposób.

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

Wszystko działa ok, za wyjątkiem tego, że teraz platforma rejestruje się w konsoli, w tym treści jakichkolwiek zapytań wysyłanych do bazy danych.

W jakiś sposób wewnętrzne rejestrowanie jest włączone, ale nie widzę, gdzie udało mi się go uruchomić.

Jak mogę zapobiec .SIEĆ od wejścia na ekran?

Uwaga: Logger jest kopią mojego własnego stylu prowadzenia dziennika ConsoleLogger. Ta klasa nie implementuje ILogger lub użyj coś jeszcze .NET. To jest po prostu klasę, która również wchodzi w konsoli i plik. Rejestrowanie za pomocą tego rejestratora działa normalnie. I ja to potwierdził .Blogów nie są wysyłane do tej klasy.

Aktualizacja:

Oto mój kod, który dostosowuje hosta.

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 oto kod, który go powoduje.

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

Najlepsza odpowiedź

1

Uwaga

To CreateDefaultBuilder metoda:
...
...
Dodaje takich dostawców rejestrowanie:

  • Konsola
  • Debugować
  • Źródło zdarzeń
  • Dziennik zdarzeń (tylko w przypadku pracy w systemie Windows)

Link do ustawienia domyślnego konstruktora

Trzeba będzie wyraźnie usunąć dostawców domyślnie i dodać tylko te, które chcesz.

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

//...

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

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

//...

Należy pamiętać, że jeśli chcesz, aby inne rozszerzenia nie dodawać swoich własnych dostawców, wykonaj ustawienie rejestrowania ostatni, aby użytkownik miał pewność, jakie rejestratory zostały dodane.

2021-11-23 20:41:50

Tak, tak się właśnie dzieje. Nie jestem pewien, dlaczego ConfigureLogging zasugerował, że logging parametr miał typ HostBuilderContext ale udało mi się zmusić to być ILoggingBuilder. Dziękuję za pomoc.
Jonathan Wood

W innych językach

Ta strona jest w innych językach

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