我刚刚将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。
关于我如何解决这个问题的任何想法?
答案 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)吗?