Dürüst olmak gerekirse, IIS'de kirli bir hile yapmaya çalıştım ve tam da bundan kaçacağımı düşündüğümde, geçici çözümümün çalışmadığını fark ettim. İşte yapmaya çalıştığım şey:
1) IProcessHostPreloadClient'i devralan Preloader sınıfına sahip olan ve Preload yöntemi uygulamasındaki tüm ağır başlatmayı yapan ASP.NET uygulamam var (uygulama karmaşık ve muazzam bir sistemin parçası, bu yüzden gerekli tüm bağlantıların kurulması yaklaşık 2 dakika sürüyor hizmetler ve bazı Birlik kayıtlarının önceden başlatılması).
2) Uygulama kapatma (abonelikten ayrılma, bağlantıyı kesme, imha etme, ...) yapılması gereken çok işim var ve bunu yapmak için en iyi yer Global.asax'ta bulunan * Application_End * yönteminde .
3) Kullanıcı etkinliğim olduğunda her şey iyi çalışıyor (yukarıda belirtilen web uygulaması içeren Uygulama Havuzu başlatıldıktan sonra ilk istek * Application_Start * 'ın çağrılmasına ve daha sonra * Application_End * Uygulama Havuzu durdurma veya geri dönüşümde çağrılmasına neden olur), ancak sorunlar kullanıcı etkinliği olmadığında ve uygulama 48 saat etkin olduktan sonra kendini yeniden başlatmaya çalıştığında oluşur (yapılandırılmış gereksinim). Hiçbir istek olmadığından, başvuru resmen başlamamıştır. Ergo, * Application_End * çağrılmayacağı için durdurulamaz.
4) Şimdi dağınık kısmı geliyor ... Preload yönteminin sonunda koddan bir GET isteği yapmaya çalıştım ve çalıştı. Ama işe yarasa bile bu çözüm benim için kötü görünüyordu. Yani, bir çok şey denedim ve son denediğim şey şuydu:
SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);
... ve bu amacını gerçekleştirdi. * Application_Start * çağrıldı (yanıtı kontrol ettim, ilk istekte görüntülenmesi gereken giriş sayfasını içeriyordu) ve Application Pool kapatma uygulamasında * Application_End * 'de gerekli çalışmaları yaparak incelikle sona erdi.
FAKAT
Uygulama bu şekilde başlatıldıktan (önceden yüklendikten ve başlatıldıktan sonra), Web tarayıcısı üzerinden uygulamaya ulaşmak istediğimde olan buydu:
500.21 HTTP Hatası - Dahili Sunucu Hata İşleyicisi "ExtensionlessUrlHandler-Integrated-4.0" modül listesinde hatalı "ManagedPipelineHandler" modülü var
Bunu anlayamıyorum. Biri bana bunun neden olduğunu ve nasıl düzeltileceğini söyleyebilir mi?
Eğer bunu anlamazsam, ilk çözüme geri döneceğim (koddan GET isteği göndererek) ama neyin yanlış olduğu hakkında bir fikrim bile olmadığından bu sorun beni rahatsız edecek.