Joh*_*ohn 25 windows iis .net iis-7.5
我有一个对某些资源持有独占锁的站点。我使用 .NET Application_Start 和 Application_End 事件在适当的时候获取和释放对这些资源的锁。为了使其正常工作,在任何给定时间只能运行一个我的应用程序实例。
为了实现这一点,我已将Disable Overlapped Recycle应用程序池上的属性设置为True. 这个属性应该确保旧的工作进程在应用程序池被回收时在新的工作进程启动之前完全关闭。每当应用程序池通过 IIS 手动回收时,这都可以正常工作,自动作为达到空闲超时的结果或根据任何特定时间/时间间隔规则自动回收。
但是,当站点的 web.config 更新时,此规则不会得到应用 - 在旧的工作进程完成关闭之前会启动一个新的工作进程。这会导致不好的事情发生。我将Disable Recycling for Configuration Changes属性设置False为我确实希望应用程序池在 web.config 更新时被回收 - 这在开发过程中经常发生。
这是预期的东西,还是 IIS 中的错误?是我设置以便更改 web.config 不会回收应用程序池的唯一选择吗?我宁愿不这样做,因为我很确定这会导致人们更改配置然后忘记回收应用程序池会引起很多麻烦。
更新:
更明确地说,当在start旧工作进程完成关闭之前调用新工作进程事件时,旧工作进程end事件永远不会被调用——它不会乱序发生,它根本不会发生。
来自此 MSDN 帖子: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/
因此,作为代码部署过程的一部分,当您部署以下任何一项更改时,您的池似乎都会回收:
立即回收
(借自: https: //stackoverflow.com/questions/302110/what-c auses-an-application-pool-in-iis-to-recycle )
| 归档时间: |
|
| 查看次数: |
5975 次 |
| 最近记录: |