【问题标题】:C# :Unity container and ILoggerC#:Unity 容器和 ILogger
【发布时间】:2019-03-11 14:25:54
【问题描述】:

我正在开发 ASP .Net MVC5 项目,我正在使用 ILogger 接口 inder Microsoft.Extensions.LoggingDI 的 Unity 框架强>.

我想要将 ILogger 注入到我的项目中,以便在我的控制器中使用它。

我在我的项目中安装了 Unity 和 Unity.MVC nuget 包,并尝试像这样注入 ILogger:

 public static void RegisterTypes(IUnityContainer container)
        {
            container.RegisterType(typeof(ILogger<>), typeof(Logger<>), (new HierarchicalLifetimeManager()));
        }

我的控制器:

public class HomeController : Controller
    {
        private readonly ILogger _logger;

        public HomeController(ILogger logger)
        {
            _logger = logger;
        }
        public ActionResult Index()
        {
            _logger.LogInformation("TEST log event message");

            return View();
        }

总是在我运行项目时出现此错误:

【问题讨论】:

  • 您只注册了ILogger&lt;&gt; 的通用版本,而您的控制器正在等待非通用版本。您是否尝试简单地将Logger 注册为ILogger

标签: c# .net asp.net-mvc unity-container


【解决方案1】:

您注册了ILogger&lt;T&gt;,但您的HomeController 需要ILogger。 Unity 容器正在尝试构建一个ILogger;它是一个接口,所以它没有公共 ctor。

将您的 HomeController ctor 更改为此以使您的注册工作...

public HomeController(ILogger<HomeController> logger)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    相关资源
    最近更新 更多