【发布时间】:2019-05-13 08:43:42
【问题描述】:
我有一个 asp.net core 2.2 解决方案。结构看起来像 我的项目 我的项目.Web
一切都在 MyProject 项目中,我只保留网络以供声明。
我已将 Microsoft.Extensions.Logging.Log4Net.AspNetCore 引用添加到 MyProject.Web
我在 Startup.cs 中添加了loggerFactory.AddLog4Net();。我还在 MyProject.Web 中添加了 log4net.config 并设置为Always Copy。
我在 MyProject 项目中有一项服务调用 ServiceA
public class ServiceA
{
private readonly ILogger logger;
public ServiceA(ILogger logger)
{
this.logger = logger;
}
}
但是,当我运行该解决方案时,它会因错误 HTTP Error 500.30 - ANCM In-Process Start Failure 而崩溃。
当我从 ServiceA 的构造函数中删除 ILogger 时,项目运行。还有什么我在这里遗漏的吗?
【问题讨论】:
-
如果你使用依赖注入,你应该接受
ILogger<ServiceA>作为参数,而不是ILogger。否则 DI 容器将尝试创建一个ILogger实例。 -
你试过调试你的代码吗?你得到了什么例外?我曾多次犯过同样的错误,但我不记得异常是什么。我认为是 DI 容器找不到 ILogger 实例。这是有道理的,因为扩展自己注册了一个强类型工厂
标签: c# .net asp.net-core log4net