您需要告诉 Castle 如何解析未在您的程序集中定义的 SitecoreController。尝试这个:
container.Register(
Classes.FromThisAssembly()
.BasedOn<IController>()
.LifestyleTransient()
.Configure(x => x.Named(x.Implementation.FullName)),
Component.For<SitecoreController>()
.ImplementedBy<SitecoreController>()
.LifestylePerWebRequest()
.DependsOn(new {databaseName = Sitecore.Context.Database})
);
编辑:根据评论,您可以将此注册扩展到类似的内容。您可能需要查看每个对象的 Lifestyle 设置,并且根据您的 Controller 的构造函数,您可能需要添加其他实现。
container.Register(
Classes.FromThisAssembly().BasedOn<IController>().LifestyleTransient(),
Component.For<ISitecoreContext>().ImplementedBy<SitecoreContext>().LifestylePerWebRequest(),
Component.For<ISitecoreService>().ImplementedBy<SitecoreService>(),
Component.For<IGlassHtml>().ImplementedBy<GlassHtml>().LifestylePerWebRequest(),
Component.For<SitecoreController>()
.ImplementedBy<SitecoreController>()
.LifestylePerWebRequest()
.DependsOn(new {databaseName = Sitecore.Context.Database})
);