如何避免将慢速Application_Start时间传递给ASP.NET中的最终用户

and*_*ndy 11 iis-7 ioc-container global-asax asp.net-mvc-3 appharbor

由于在启动时发生了很多IoC,因此我的Application_Start运行速度相当慢.

我试图解决的问题是,如何避免将启动时间传递给最终用户?

假设

我的应用程序托管在AppHarbor上,因此我无法访问IIS.然而,即使我这样做,我的理解仍然是让应用程序池回收是最好的做法,所以没有办法避免让Application_Start定期运行(我认为AppHarbor每20分钟一次).

我的想法是解决它

最初我以为我每分钟都会点击它,但这似乎太暴力了,它甚至可能无法阻止用户经历慢启动.

我目前的解决方案是处理Application_End事件,然后立即点击应用程序以便它再次启动,因此希望不会影响任何用户.

有没有更好的方法来解决这个问题?

Fac*_*tio 5

不幸的是,当您使用InProcess会话状态时,较长的会话超时不会阻止IIS应用程序池回收.

您是否考虑过延迟加载(某些)依赖项?SimpleInjector有关于如何执行此操作的文档,该文档应适用于大多数其他IoC:

简单的注入器\文档\如何\注册工厂代表\使用惰性工厂