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 =>
{
});
ConfigureLogging
zasugerował, żelogging
parametr miał typHostBuilderContext
ale udało mi się zmusić to byćILoggingBuilder
. Dziękuję za pomoc.