【发布时间】:2016-12-18 17:29:13
【问题描述】:
我已经在 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 配置似乎有问题。
【问题讨论】:
-
你有异常吗?如果是这样,请将完整的异常详细信息添加到您的问题中。
-
您在 Autofac 中注册的 ILogger 接口与您在构造函数中的接口完全相同吗?那里有很多 ILogger 接口。
-
ILogger 是我在 Nlog 和 Serilog 上编写到外观的接口。
-
@TravisIllig 即使
ILoggers 是不同的,如果连接正确,Autofac 也会抛出不同的消息,对吧? -
不。如果您注册了错误类型的记录器,那么所有 Autofac 都知道它不能满足参数,因此您将收到“无无参数构造函数”错误。它匹配类型,而不是名称。
标签: c# asp.net-web-api2 autofac