2010-11-10 18 views
0

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

行动的过程就像这样。 (跨越大约20秒)

  1. 应用程序正在运行,我们称之为实例A.
  2. 重新启动初始化
  3. 一个新的实例启动时,我们称之为B(通过的Application_Start登录)
  4. 进来的请求由实例B处理,这会使所有已缓存的数据无效。
  5. 实例A上的计时器被触发,假定其缓存有效,并向持久存储中写入无效的内容。
  6. 实例A被关闭(由Application_End记录)

优选我想禁止上述行为完全,IIS应只允许一个实例。如果不可能,我可以在我的代码中检测是否有其他实例正在运行,然后等待它在application_start内退出?如果不可能,解决此问题的最佳方法是什么?

回答

1

禁用重叠的回收:

“在重叠的回收情况, 针对循环 过程中继续处理所有剩余 请求,就同时创建一个替代工人 过程 新工艺。在旧的 工作进程停止之前启动,并且请求 然后被引导到新的进程。这个 设计可以防止延迟服务, ,因为旧的进程继续到 接受请求,直到新进程 已成功初始化,并且 被指示仅在 新进程准备好处理 请求之后关闭。

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

+0

除非有正当理由,修复,而不是改变IIS设置你的应用程序。重叠的回收确实可以提供更好的用户体验。 – 2013-02-28 22:31:00

相关问题