在重新启动期间关闭先前实例之前,阻止IIS启动应用程序

时间:2010-11-10 15:33:22

标签: iis

有时,当IIS重新启动应用程序池时,它将在上一个实例完全关闭之前启动我的应用程序的新实例。这引起了很多问题,所以我想知道我能做些什么。

行动方针就是这样的。 (跨越约20秒)

  1. 应用程序正在运行,我们将此实例称为A.
  2. 重新初始化
  3. 启动一个新实例,让我们称之为B(由Application_Start记录)
  4. Incomming请求由实例B处理,这使A缓存的所有数据无效。
  5. 触发实例A上的计时器,假设其缓存有效并将无效内容写入持久存储。
  6. 关闭实例A(由Application_End记录)
  7. 首选我想完全禁用上述行为,IIS应该只允许一个实例。如果不可能,我可以在我的代码中检测其他实例是否正在运行,然后等待它在application_start中退出?如果不可能,解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

禁用重叠回收:

  

“在重叠的回收方案中,   回收的目标流程   继续处理所有剩余的   替换工人请求   进程是同时创建的。该   新流程在旧之前就开始了   工作进程停止,请求是   然后转向新流程。这个   设计可防止延误服务,   因为旧的过程继续   接受请求直到新进程   已成功初始化,并且是   指示只有在关闭后关闭   新流程已准备就绪   请求“。

http://msdn.microsoft.com/en-us/library/ms525803(v=vs.90).aspx