Asp.Net App Pool重叠回收时间?

dow*_*one 5 asp.net iis-7 application-pool

我最好能告诉员工流程何时回收:

a)新的一个在旧的关闭之前旋转b)旧的一个关闭所有活动请求它的服务完成

以上是准确的吗?

如果是这样,一旦Application_End()从global.ascx文件触发,我就会在SQL中存储数据.当Application_Start()触发时,我将这些数据拉回来.

问题是基于我的测试,新的工作进程在我的旧工作进程有机会完成其Application_End()之前触发Application_Start().

处理这种情况的最佳做法是什么?

提前喝彩

编辑:我刚刚注意到IIS 7上的一个功能'禁用重叠回收' - 我猜这是最好的路线

Nar*_*man 5

您对重叠回收的描述是准确的,是(1); 并且有一个禁用它的设置,但它旨在防止您将重新引入的HTTP错误.应用程序池回收是托管应用程序的常见情况(源自(其中包括阻止在同一内存空间中卸载程序集的CLR限制),您必须为其设计).

您的技术很难在Web场Web园场景中进行管理.

我认为更好的设计是依靠进程外存储来存储数据(使用ScaleOut,App Fabric等分布式缓存产品),以便所有应用程序池都具有相同的缓存数据视图.

(1) - http://mvolo.com/blogs/serverside/archive/2008/02/25/Starting_2C00_-stopping-and-recycling-IIS-7.0-Web-sites-and-application-pools.aspx