ELMAH MVC 2 - Castle Windsor的问题

时间:2012-07-09 09:07:46

标签: asp.net-mvc elmah

我刚刚将ELMAH MVC(v2)安装到我的Web应用程序中,但是当我尝试在/ elmah查看日志时,我得到以下异常

找不到支持Elmah.Mvc.ElmahController服务的组件 [ComponentNotFoundException:找不到支持Elmah.Mvc.ElmahController服务的组件]    Castle.MicroKernel.DefaultKernel.Resolve(类型服务)+140    Castle.Windsor.WindsorContainer.Resolve(类型服务)+40    N2.Engine.Castle.WindsorServiceContainer.Resolve(Type type)+40    N2.Engine.ContentEngine.Resolve(输入serviceType)+48

该网站包括N2 CMS系统,后者又使用Castle Windsor。

关于我如何解决这个问题的任何想法?

3 个答案:

答案 0 :(得分:15)

我知道这已经有了一个已接受的答案,并且它与你的问题并不完全相关,但对于其他任何人使用N2并遇到与Elmah.MVC + Castle Windsor的问题,你需要使用Windsor在 Elmah.MVC 程序集中注册控制器。我做了一个简单的安装程序来处理这个问题:

public class ElamhInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromAssemblyNamed("Elmah.Mvc")
            .BasedOn<IController>()
            .LifestyleTransient());
    }
}

一旦我添加了这个城堡似乎能够找到ElmahController就好了。

答案 1 :(得分:0)

在发布问题后不久就制定了解决方案。我需要用N2注册Elmah控制器:

var engine = MvcEngine.Create();
engine.RegisterControllers(typeof(GlobalApplication).Assembly);
engine.RegisterControllers(typeof(ElmahController).Assembly);

答案 2 :(得分:0)

ELMAH.MVC来自App_Start代码,它使用Web.Activator注册ElmahController路由。

所以,对我来说很奇怪,为什么Windor无法加载ElmahController。默认情况下,它应该尝试自己解决它,然后如果不可能委托给ControllerFactory。

您确定,安装ELMAH后应用程序重新启动(iisreset.exe)吗?