【问题标题】:Using ELMAH with Areas in MVC 2在 MVC 2 中将 ELMAH 与区域一起使用
【发布时间】:2011-01-24 04:53:53
【问题描述】:

我正在关注这篇关于使用 MVC 设置 ELMAH 的博文:

http://dotnetdarren.wordpress.com/2010/07/27/logging-on-mvc-part-1/

我只完成了第 1 部分。如果我只是转到 Home 控制器,一切都会正常工作,然后会导致错误。我也可以查看/elmah.axd,并且我的错误正确地记录在数据库中。

但是,我在我的应用程序中添加了一个名为 Admin 的区域。如果我导航到 /Admin,我会收到以下错误:

System.MissingMethodException:没有为此对象定义无参数构造函数。

public override IController CreateController(RequestContext requestContext, string controllerName)
{
    var controller = base.CreateController(requestContext, controllerName); //Error here

    var c = controller as Controller;

我假设这与我的地区有关。

有谁知道如何解决这个问题?

为 jfar 编辑:

例如,我的管理区域中有一个员工控制器:

public class EmployeesController : Controller
{
    private IEmployeesRepository employeesRepository;

    public EmployeesController(IEmployeesRepository employeesRepository)
    {
        this.employeesRepository = employeesRepository;
    }

    //...
}

【问题讨论】:

    标签: c# asp.net asp.net-mvc elmah


    【解决方案1】:

    您的 AdminController 是否有无参数构造函数?


    是的,你需要一个无参数的构造函数。如果您尝试注入依赖项,则需要编写或使用知道如何执行此操作的控制器工厂。

    这可能会有所帮助:

    Constructor Dependency Injection in a ASP.NET MVC Controller

    【讨论】:

    • 不,它没有。我将一个存储库传递给我所有的控制器构造函数。我已经编辑了我的原件给你看一个例子。我只需要添加一个无参数的构造函数吗?
    • 感谢您的链接。我正在使用最新版本的 Ninject,其中 global.asax 中的 MvcApplication 继承自 NinjectHttpApplication。你知道我如何覆盖 NinjectControllerFactory 以便将我的依赖项注入到无参数构造函数中吗?
    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多