Umbraco v7.5.8
我在 DI 设置方面遇到了很多问题(如下所示)。
1) 如果构造函数采用参数,则 OnApplicationInitialized 和 OnApplicationStarted(及其他)事件均不会触发。
2) 后台已损坏。无法访问内容节点。异常消息是: 尝试创建“ContentController”类型的 Controller 时发生错误。确保 Controller 具有无参数公共(public)构造函数。
// Application handlers
public class UmbracoApplicationEventHandler : IApplicationEventHandler
{
private IMenuManager _menuManager;
public UmbracoApplicationEventHandler(IMenuManager menuManager)
{
_menuManager = menuManager;
}
public void OnApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
ContentService.Saving += UpdateMenu;
}
private void UpdateMenu(IContentService sender, SaveEventArgs<IContent> saveEventArgs)
{
_menuManager.UpdateMenu();
}
}
// Unity config:
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType<IMenuManager, MenuManager>();
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
}
}
// Owin Startup:
public class UmbracoStandardOwinStartup : UmbracoDefaultOwinStartup
{
public override void Configuration(IAppBuilder app)
{
//ensure the default options are configured
base.Configuration(app);
UnityConfig.RegisterComponents();
}
}
最佳答案
请阅读:https://our.umbraco.org/documentation/reference/using-ioc 。
您需要在 OnApplicationStarted 事件上注册并构建容器,如果您想让它与 Umbraco 一起工作,则不能更早。
关于umbraco - ApplicationEventHandler 中的依赖注入(inject)。漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483093/