无法使用Autofac将ILogger注入类中

时间:2016-12-18 17:29:14

标签: c# asp.net-web-api2 autofac

我已经在autofac配置中设置了记录器,但记录器没有被注入控制器或其他类中。

builder.RegisterType<SerilogLogger>()
                .WithParameters(new List<Parameter>
                {
                    new NamedParameter("connectionString", azureConnectionString),
                    new NamedParameter("azureTableName", azureTableName),
                })
                .As<ILogger>().SingleInstance();

HomeController.cs

public class HomeController : Controller
{
    private ILogger logger;

    public HomeController(ILogger logger)
    {
        this.logger = logger;
    }

    public ActionResult Index()
    {
        ViewBag.Title = "Home Page";

        return View();
    }
}

我需要显式访问记录器。有任何想法吗?

异常详情

No parameterless constructor defined for this object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.

异常是直接的,似乎是我的autofac配置问题。

1 个答案:

答案 0 :(得分:0)

使用asp.net-web-api2标记问题听起来很奇怪,但您的代码示例似乎使用了ASP.NET MVC。

我可以看到这里发生了两件事:

  • 您的容器中没有register the controllers
  • 和/或您没有set the DependencyResolver使用您的Autofac容器,这意味着默认控制器激活器负责新建您的控制器,并且它只能对具有默认值的控制器执行此操作 - 无参数 - 构造函数