我正在将以下适用的WebHost.CreateDefaultBuilder
方法改编为基于的方法,Host.CreateDefaultBuilder
以便可以使用UseWindowsService
扩展方法。
// WORKING
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
...
})
.UseStartup<Startup>();
}
当我尝试适应这个问题时...
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureLogging((hostingContext, logging) =>
{ // tried here
...
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureLogging((hostingContext, logging) =>
{ // tried here too
...
});
.UseStartup<Startup>();
});
我收到以下错误...
尝试激活“ MyProject.Startup”时,无法解析类型为“ Microsoft.Extensions.Logging.ILoggerFactory”的服务。
在此处设置日志记录的合适方法是什么?
Startup
使用通用主机(IHostBuilder
)时,只能将以下服务类型注入构造函数:
- IWebHost环境
- 主机环境
- 配置
虽然您的链接Startup
似乎在允许的服务范围之外注入。
public Startup(ILoggerFactory loggerFactory)
{
this._Factory = loggerFactory;
this._Logger = loggerFactory.CreateLogger<Startup>();
}
根据链接的Startup
代码,似乎没有使用该记录器,并且注释掉了对该记录器的一个引用,因为基于使用该记录器的上下文,它是不需要的。
我建议删除ILoggerFactory
从Startup
构造函数的注入,作为对框架的较新版本进行重构的一部分。
原始示例代码提供的所有其他内容似乎都遵循文档中建议的格式,并且应能按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句