加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Windows – IIS 7.5 – 更新web.config时禁用不重写的Relapped R

发布时间:2021-05-22 09:41:17 所属栏目:Windows 来源:网络整理
导读:我有一个网站,它拥有对某些资源的独占锁定.我使用.NET Application_Start和Application_End事件在适当的时间获取并释放对这些资源的锁定.为了使其正常工作,我的应用程序只能在任何给定时间运行一个实例. 为了实现这一点,我将Application Pool上的Disable Ove

我有一个网站,它拥有对某些资源的独占锁定.我使用.NET Application_Start和Application_End事件在适当的时间获取并释放对这些资源的锁定.为了使其正常工作,我的应用程序只能在任何给定时间运行一个实例.

为了实现这一点,我将Application Pool上的Disable Overlapped Recycle属性设置为True.此属性应确保在应用程序池被回收时,旧工作进程在新应用程序启动之前完全关闭.无论何时通过IIS手动回收应用程序池,这都可以正常工作,因为达到了空闲超时,或者根据任何特定的时间/时间间隔规则自动回收.

但是,当更新站点的web.config时,不会应用此规则 – 新旧的工作进程在旧的完成关闭之前启动.这会导致糟糕的事情发生.我将禁用回收配置更改属性设置为False,因为我希望在更新web.config时回收应用程序池 – 这在开发期间经常发生.

这是预期的,还是IIS中的错误?是我唯一的设置选项,以便更改web.config不回收应用程序池?我宁愿不这样做,因为我很确定这会让人们更改配置然后忘记回收应用程序池会引起很多麻烦.

更新:

更清楚的是,当在旧的工作进程完成关闭之前调用新的工作进程启动事件时,旧的工作进程结束事件永远不会被调用 – 它不会不按顺序发生,它根本不会发生.

来自这篇MSDN帖子:
https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/

因此,作为代码部署过程的一部分,当您部署以下任何一个更改时,您的池似乎会回收:

立即回收

> Web.config更改
> Machine.config更改
> Global.asax更改
> Bin目录更改
> App_Code更改

(借鉴自:https://stackoverflow.com/questions/302110/what-causes-an-application-pool-in-iis-to-recycle)

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!