我目前正在我的UnityConfig.cs
内进行以下操作,由App_Start
的UnityMvcActivator调用:
container.RegisterType<IUserDal, UserDal>(new PerRequestLifetimeManager());
我也是这样做的:
container.RegisterType<IEmailObserver, EmailObserver>(new ContainerControlledLifetimeManager());
我应该提到IUserDal
位于IEmailObserver
的构造函数中:
public EmailObserver(IUserDal userDal);
现在我想在应用程序启动时启动EmailObserver
实例,所以我有这个:
`DependencyResolver.SetResolver(new UnityDependencyResolver(container));
container.Resolve<IEmailObserver>();//this line fails
我得到的错误信息是:
Exception is: InvalidOperationException - The PerRequestLifetimeManager can only be used in the context of an HTTP request. Possible causes for this error are using the lifetime manager on a non-ASP.NET application, or using it in a thread that is not associated with the appropriate synchronization context.
我正在尝试实现Observer Pattern,但我想使用Unity注册我的观察者并在应用启动时初始化它们。
答案 0 :(得分:1)
检查EmailObserver构造函数 - 我认为那里的所有类型都应该是单例。