Jsem implementoval závislost injekce v mé aplikaci. A já konfigurace služby takto.
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>();
Tohle všechno funguje v pořádku až na to, že rámec je přihlášení do konzole, včetně obsahu jakékoliv dotazy do databáze.
Nějak vnitřní protokolování povoleno, ale nevidím, kde jsem ji povolili.
Jak mohu zabránit .NET od přihlášení na obrazovku?
Poznámka: Logger
je příklad z mé vlastní třídy protokolování ConsoleLogger
. Tato třída neimplementuje ILogger
nebo použít něco jiného .NET. To je prostě vlastní třídu, která také zaznamenává do konzole a souboru. Přihlášení z této ústředny je v pořádku. A já jsem potvrdil .ČISTÉ záznamy nejsou odeslány do této třídy.
Aktualizace:
Tady je můj kód, který nastaví hostitele.
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();
}
A tady je kód, který jej volá.
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
předpokládallogging
parametr je typuHostBuilderContext
ale byl jsem schopen donutit, aby to byloILoggingBuilder
. Díky za vaši pomoc.