我正在将以下有效的WebHost.CreateDefaultBuilder
方法改编为基于Host.CreateDefaultBuilder
的方法,以便可以使用UseWindowsService
extension method。
// 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>();
});
我收到以下错误...
无法解析类型的服务尝试执行'Microsoft.Extensions.Logging.ILoggerFactory'激活“ MyProject.Startup”。
在此处设置日志记录的适当方法是什么?
[以下服务类型只能注入
Startup
使用通用主机(IHostBuilder
)时的构造函数:
- IWebHostEnvironment
- IHostEnvironment
- IConfiguration
虽然您链接的Startup
似乎在允许的服务范围之外注入。
public Startup(ILoggerFactory loggerFactory)
{
this._Factory = loggerFactory;
this._Logger = loggerFactory.CreateLogger<Startup>();
}
基于链接的Startup
代码,似乎未使用该记录器,并且注释掉了对该记录器的一个引用,因为基于使用该记录器的上下文,不需要它。
[我建议从ILoggerFactory
构造函数中删除Startup
的注入,作为对框架的较新版本的重构的一部分。
原始示例代码提供的所有其他内容似乎都遵循文档中建议的格式,并且应该可以正常工作。