일부 리소스를 독점적으로 보유하고있는 사이트가 있습니다. 적절한 시간에 .NET Application_Start 및 Application_End 이벤트를 사용하여 이러한 리소스에 대한 잠금을 획득하고 해제했습니다. 이것이 제대로 작동하려면 주어진 시간에 내 응용 프로그램 인스턴스가 하나만 실행될 수 있습니다.
이를 위해 Disable Overlapped Recycle
응용 프로그램 풀 의 속성을로 설정 했습니다 True
. 이 속성은 앱 풀이 재활용 될 때마다 새 작업자 프로세스가 시작되기 전에 이전 작업자 프로세스가 완전히 종료되도록합니다. 이는 유휴 시간 제한에 도달하거나 특정 시간 / 시간 간격 규칙에 따라 자동으로 IIS를 통해 앱 풀을 수동으로 재활용 할 때마다 잘 작동합니다.
그러나 사이트의 web.config가 업데이트되면이 규칙이 적용되지 않습니다. 이전 작업자 프로세스가 종료되기 전에 새 작업자 프로세스가 시작됩니다. 이로 인해 나쁜 일이 발생합니다. web.config가 업데이트 될 때 앱 풀이 재활용 되도록 Disable Recycling for Configuration Changes
속성을 설정했습니다. False
이는 개발 중에 자주 발생합니다.
이것이 예상되는 것입니까, 아니면 IIS의 버그입니까? web.config를 변경해도 앱 풀이 재활용되지 않도록 설정하는 유일한 옵션입니까? 사람들이 구성을 변경 한 다음 응용 프로그램 풀을 재활용하는 것을 잊어 버리는 많은 두통을 일으킬 것이라 확신하기 때문에 오히려 이것을하지 않을 것입니다.
최신 정보:
더 명확하게 말하면, start
이전 작업자 프로세스가 종료되기 전에 새 작업자 프로세스 이벤트가 호출되면 이전 작업자 프로세스 end
이벤트가 호출되지 않습니다. 시퀀스에서 발생하지 않으며 전혀 발생하지 않습니다.