7

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

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

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

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

4

3 回答 3

15

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

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

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

于 2012-11-26T20:58:24.070 回答
0

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

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

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

于 2012-07-09T10:56:35.553 回答
0

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

var engine = MvcEngine.Create();
engine.RegisterControllers(typeof(GlobalApplication).Assembly);
engine.RegisterControllers(typeof(ElmahController).Assembly);
于 2012-07-09T09:34:54.910 回答