IIS 7.5 - Nonaktifkan properti Daur Ulang yang Tumpang tindih tidak dipatuhi ketika web.config diperbarui

25

Saya memiliki situs yang memegang kunci eksklusif pada beberapa sumber. Saya menggunakan .NET Application_Start dan Application_End peristiwa untuk mendapatkan dan melepaskan kunci pada sumber daya ini pada waktu yang tepat. Agar ini berfungsi dengan baik, hanya akan ada satu contoh aplikasi saya berjalan pada waktu tertentu.

Agar ini terjadi, saya telah menyetel Disable Overlapped Recycleproperti di Application pool True. Properti ini seharusnya memastikan bahwa proses pekerja lama dimatikan sepenuhnya sebelum yang baru dimulai setiap kali kumpulan aplikasi didaur ulang. Ini berfungsi dengan baik setiap kali kumpulan aplikasi didaur ulang secara manual melalui IIS, secara otomatis sebagai hasil dari idle-timeout tercapai atau secara otomatis sesuai dengan aturan interval waktu / waktu tertentu.

Namun, ketika web.config untuk situs diperbarui, aturan ini tidak diterapkan - Proses pekerja baru dimulai sebelum yang lama selesai dimatikan. Ini menyebabkan hal-hal buruk terjadi. Saya memiliki Disable Recycling for Configuration Changesproperti yang disetel Falsekarena saya ingin kumpulan aplikasi didaur ulang ketika web.config diperbarui - ini sering terjadi selama pengembangan.

Apakah ini sesuatu yang diharapkan, atau itu bug di IIS? APAKAH satu-satunya pilihan saya untuk mengatur agar mengubah web.config tidak mendaur ulang kumpulan aplikasi? Saya lebih suka tidak melakukan ini, karena saya cukup yakin itu akan menyebabkan banyak sakit kepala dengan orang-orang mengubah konfigurasi dan kemudian lupa untuk mendaur ulang kumpulan aplikasi.

Memperbarui:

Untuk lebih jelasnya, ketika startacara proses pekerja baru dipanggil sebelum proses pekerja lama selesai ditutup, maka endacara proses pekerja lama tidak pernah dipanggil - Ini tidak terjadi secara berurutan, tidak pernah terjadi sama sekali.

John
sumber
Berapa lama setelah web.config diperbarui sebelum proses pekerja baru dimulai?
Greg Askew
Proses pekerja baru dimulai segera setelah saya mencoba mengakses situs setelah daur ulang - Jadi kurang dari satu detik jika saya cepat. Jika dibiarkan, acara 'shutdown' proses pekerja lama berlangsung 20-30 detik setelah daur ulang.
John
Saya memiliki masalah yang sama. Ada tumpang tindih
Andrew Rimmer
11
Mengedit file web.config menyebabkan appDomain memuat ulang. AppDomain terpisah dari AppPool. Anda seharusnya tidak melihat id proses W3WP baru hanya dari mengubah web.config. Lihat di sini treeloop.com/blog/iis-application-domain-and-pool-recycling
kheld
1
@kheld benar sekali (mungkin tambahkan ini sebagai jawaban) ini bukan tumpang tindih appool, ini tumpang tindih appDomain. Saya tidak percaya Anda bisa menghentikan ini, tetapi Anda dapat menonaktifkan daur ulang domain aplikasi saat perubahan.
Sam Cogan

Jawaban:

1

Dari MSDN Post ini: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/

Jadi sebagai bagian dari proses penerapan kode Anda, sepertinya kumpulan Anda akan didaur ulang ketika Anda menerapkan salah satu dari perubahan ini:

Daur Ulang Segera

  • Perubahan Web.config
  • Perubahan machine.config
  • Perubahan Global.asax
  • Perubahan direktori bin
  • Perubahan App_Code

( dipinjam dari: /programming/302110/what-causes-an-application-pool-in-iis-to-recycle )

Matt McDonald
sumber