Bazı kaynaklar üzerinde özel bir kilit tutan bir sitem var. Bu kaynakların kilidini uygun bir zamanda almak ve serbest bırakmak için .NET Application_Start ve Application_End olaylarını kullandım. Bunun doğru çalışması için, herhangi bir zamanda çalışan uygulamamın yalnızca bir örneği olabilir.
Bunun gerçekleşmesi Disable Overlapped Recycle
için, Uygulama havuzundaki mülkü ayarlıyorum True
. Bu özelliğin, eski çalışan işleminin, uygulama havuzu geri dönüştürüldüğünde yeni bir başlamadan önce tamamen kapanmasını sağlaması beklenir. Uygulama havuzu, IIS aracılığıyla manuel olarak geri dönüştürüldüğünde, boşta kalma zaman aşımına ulaşılmasının bir sonucu olarak veya belirli bir zaman / zaman aralığı kurallarına göre otomatik olarak bu otomatik olarak çalışır.
Ancak, site için web.config güncellendiğinde, bu kural uygulanmıyor - Eski kural kapatılmadan önce yeni bir alt işlem başlatılır. Bu kötü şeylerin olmasına neden olur. Ben Disable Recycling for Configuration Changes
mülk seti False
bu gelişme sırasında sık gerçekleşen - web.config güncellendiğinde uygulama havuzu geri dönüşümlü olsun istiyoruz kadar.
Bu beklenen bir şey mi, yoksa IIS'de bir hata mı? Web.config'ü değiştirmek uygulama havuzunu geri dönüştürmeyecek şekilde ayarlamak için tek seçeneğim mi? Bunu yapmamayı tercih ederim, çünkü insanların yapılandırmayı değiştirmesi ve uygulama havuzunu geri dönüştürmeyi unutmasıyla baş ağrısına neden olacağından oldukça eminim.
Güncelleştirme:
Daha açık olmak gerekirse start
, eski işçi işleminin kapatılması bitmeden önce yeni işçi işlem olayı çağrıldığında, eski işçi işlem end
olayı hiçbir zaman çağrılmaz - Sıra dışı olmaz, asla gerçekleşmez.