IIS 7.5 - Web.config güncellendiğinde Çakışan Geri Dönüşüm özelliğini devre dışı bırakma


25

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 Recycleiç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 Changesmülk seti Falsebu 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 endolayı hiçbir zaman çağrılmaz - Sıra dışı olmaz, asla gerçekleşmez.


Web.config, yeni çalışan işlemine başlamadan ne kadar süre önce güncellendi?
Greg,

Yeni işçi süreci siteye geri dönüşümden sonra erişmeye çalıştığımda başlar - Hızlı olursam bir saniyeden daha az. Eğer bırakılırsa, eski işçi işlemi 'shutdown' olayı geri dönüşümden 20-30 saniye sonra gerçekleşir.
John

Bende de aynı sorun var. Çakışma var
Andrew Rimmer

11
Web.config dosyasını düzenlemek, appDomain'in yeniden yüklenmesine neden olur. AppDomain, AppPool'dan ayrıdır. Sadece web.config dosyasını değiştirirken yeni bir W3WP işlem kimliği görmemelisiniz. Buraya bakın treeloop.com/blog/iis-application-domain-and-pool-recycling
saat

1
@ Kheld kesinlikle haklıdır (belki bunu cevap olarak ekleyin) bu bir appool örtüşme değildir, bir appDomain örtüşmedir. Bunu durdurabileceğinizi sanmıyorum, ancak değişiklik durumunda uygulama etki alanı geri dönüşümünü devre dışı bırakabilirsiniz.
Sam Cogan

Yanıtlar:


1

Bu MSDN Gönderisinden: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/

Bu nedenle, kod dağıtma işleminizin bir parçası olarak, aşağıdaki değişikliklerden birini uyguladığınızda havuzunuzun geri dönüşeceği görülüyor:

Hemen geri dönüşüm

  • Web.config değişiklikleri
  • Machine.config değişiklikleri
  • Global.asax değişiklikleri
  • Bin dizin değişiklikleri
  • App_Code değişiklikleri

( ödünç alındı: /programming/302110/what-causes-an-application-pool-in-iis-to-recycle )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.