【发布时间】:2012-11-04 08:02:54
【问题描述】:
在我的Application_Start 中,我使用 Unity-AutoRegistration 工具配置 Unity:
UnityFactory.Configure(config => config
.Include(If.ImplementsITypeName, Then.Register())
.ExcludeSystemAssemblies()
);
我的UnityFactory 类是静态的。 Configure 的作用如下:
public static void Configure(Func<IAutoRegistration,IAutoRegistration> configuration)
{
// Store the configuration to be able to apply it again when needed
UnityFactory.configuration = configuration;
// Create new UnityContainer
container = new UnityContainer();
// Apply configuration
configuration(container.ConfigureAutoRegistration()).ApplyAutoRegistration();
}
它在 IIS7 下运行,启动时一切正常。
只要应用程序池被回收,它就会停止工作。配置不知何故搞砸了,它无法再解决我的课程了。但是,UnityFactory 类中的静态字段 configuration 仍然包含第一次提供的配置。所以类本身并没有改变。
应用池回收后不会触发Application_Start方法,所以不会再次应用配置。
如果我设置断点并再次手动应用配置,一切都会再次运行。
这里发生了什么?为什么 Unity 会忘记我的所有课程?是否有我可以订阅的事件让我知道池何时被回收?
【问题讨论】:
标签: c# iis-7 unity-container application-pool