我怎样才能拥有可以在我的类之间共享但不能在多个Web请求之间共享的Windsor IoC容器?

时间:2010-05-28 08:16:22

标签: c# .net castle-windsor ioc-container

我正在构建一组类库,这些库可以生成基于xml的Office开放式报告,而我正在使用静态Windsor IoC容器。

我的问题是,报告系统的一个可能入口点是通过Web前端,这意味着报告系统静态IoC容器正在多个Web请求之间共享,这导致报告系统正在尝试的每个新请求出现异常重新注册Windsor中已经由先前请求注册的组件。

我不想将注册转移到网络应用程序global.asax,因为我的报告系统将不再是独立的。

如何在我的报告类之间共享Windsor IoC容器,但不能在多个Web请求之间共享?

2 个答案:

答案 0 :(得分:2)

不要一遍又一遍地重新创建容器。在全局起点,根据您的应用程序创建和设置一次。您仍然可以通过在installers中封装所有注册来使您的组件自包含。然后在global.asax中你只会安装相当容易的安装程序,而在即将推出的Windsor 2.5中它只需要2行代码。

答案 1 :(得分:1)

您是否为您的组件尝试了Lifestyle选项。有一个PerWebRequestLifestyleManager和一个PerWebRequestLifestyleModule选项。有关生活方式的信息,请参阅here。请参阅here使用生活方式选项的示例。