I Have a Extension method for IHostBuilder
public static class HostBuilderConfiguration
{
private static LoggingConfigurationOption _options;
public static IHostBuilder CustomConfigure(this IHostBuilder builder)
{
builder.ConfigureServices((hostContext, services) =>
{
_options=hostContext.Configuration.GetSection("LoggingConfigurationOption")
.Get<LoggingConfigurationOption>();
});
// here _option is null
return builder;
}
}
字符串
在注解部分,我需要_option
,但它是空的
2条答案
按热度按时间edqdpe6u1#
如果使用
Host.CreateDefaultBuilder
构建IHostBuilder
,可能会出现问题。我们可以从这个discussion中找到想法。一般的想法是远离回调(在CreateDefaultBuilder中),转向线性代码来配置一切,这是.NET 6的一部分。7.
因此,可能会发生您试图访问的_option行(//here _option为null)之前被执行,然后调用ConfigureServices内部的回调(action)(将调用host.build())。So _option为null。
eit6fx6z2#
您的ConfigureServices委托稍后运行,而不是立即运行,这会使_options为null。要解决这个问题,请将LoggingConfigurationOption设置为ConfigureServices中的Singleton服务,允许根据需要将其注入到应用程序中,而不是将其存储为静态变量。
字符串
或者你可以做下面的事情。
型