【发布时间】:2012-01-04 10:07:13
【问题描述】:
我有在 IIS 7 下运行的 MVC3 Web 应用程序。在 global.asax 应用程序初始化期间,会扫描 BuildManager.GetReferencedAssemblies() 返回的所有程序集,以及这些程序集中的所有类型 (Assembly.GetTypes()) 以便执行初始化的东西。
应用程序有时会停止正常工作 - 它的行为就好像从未发生过初始化或在启动期间忽略了某些类型。一旦应用程序进入这种失败状态(我认为它发生在池被回收之后),它就会保持这种状态,直到通过以下方式重新启动:
- 手动更新 Web.Config(添加一些空格)
- 在 IIS 管理器中手动重启应用程序
- 在 IIS 管理器中手动停止和启动应用程序池
- 自动池回收
我注意到 1. 总是有帮助,但 2,3,4 的工作方式不确定 - 至少据我所知,因为问题的性质不是确定性的 - 应用程序仅在一些预定的回收后才会崩溃。 从 global.asax 代码和访问已加载程序集的角度来看,1 和 2、3、4 有什么区别?
哦,如果应用程序发生任何更改,它会作为子应用程序(IIS 站点树中的子文件夹)运行。
【问题讨论】:
标签: c# asp.net iis assemblies global-asax