2013-04-02 17 views
6

'da yeniden başlatma Bir sorunumuz var. Asp.net WebForm uygulaması için IISExpress 8.0 kullanıyoruz (.net 4.0). Comupter, Windows 7 x64 altında çalışıyor.ApplicationShutdownReason.BuildManagerSağlama ve UygulamaHavuz IISExpress

Neden herhangi bir sebep olmadan ApplicationPool yeniden başlatır. 15 aspx \ ascx dosyası değiştikten sonra yeniden başlayacağını biliyorum. Ancak bu durumda herhangi bir değişiklik olmadan yeniden başlar. Uygulamada Bu yeniden başlatmanın bir nedenini bulduk. ApplicationShutdownReason.BuildManagerChange.

İnternet'te arama yapmak, yararlı bilgiler vermez. Çoğunlukla, IISExpress yerine IIS'yi kullanmayı önerir.

Bunun sebebi ne olabilir biliyor musunuz?

GÜNCELLEME: Net 4 kaynak koduna derin Kazı

bu kapatma iki neden verir. Birisi, hash.web dosyasını Temporary Asp.net klasöründen değiştirdiğinde bunlardan biri tetiklenir. Örneğin - "c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Geçici ASP.NET Dosyaları \ app \ a83dcad1 \ be4aa699 \ hash \ hash.web"

İkinci neden, BuildManager bir nesne oluşturduğunda ve HttpCache'de önbelleğe alınmış BuildResult. Ve sonra süresi dolduysa, bu BuildResult'un önbellek kullanım süresinde ShutdownAppDomainOnChange gerektirdiğini kontrol eder. Gerekiyorsa, BuildManagerChange kapanmasını tetikler. Bizim vaka yeniden başlatma olarak

Update2

hash.web değişikliğinden kaynaklanmıştır. IISExpress'in herhangi bir kaynak kodu değişikliği olmadan güncellediği görünüyor, ama neden?

Update3 Microsoft bu konuda bir sorunu var - https://connect.microsoft.com/VisualStudio/feedback/details/783440/microsoft-visualstudio-web-host-exe-touches-hash-web-and-should-not-be-running Onlar Visual Studio 2012 Güncelleme bunu sabit olduğunu söylemek 2.

+0

Windows 7 kullanıyorsanız, neden tamamen hatalı IIS kullanmıyorsunuz? – ashes999

+0

Birkaç web projesinin yapılandırması IIS'de bu kadar kolay değil. Bunu yapabiliriz, ama sonra her geliştirici için aynı şeyi yapmalıyız. Yani, IISExpress ile yaklaşım daha kolaydır, çünkü bir tarafından yapılandırılır ve diğerleri tarafından kullanılır. –

+0

Deneyimlerime göre, IIS Express korkunç. Bahsettiğiniz konfigürasyon, tüm geliştiricilerin yapması gereken bir şeydir - hiçbir iş yok. Uzun vadede, bu maliyet IisExpress tuhaflığının maliyetinden çok daha küçüktür. – ashes999

cevap

2

Bu tam bir cevap değil, bu yüzden alabilir ondan ne fayda almak .

İki şey oluyor gibi görünüyor: hash.web değişikliği, IIS'nin oluşturduğunuz uygulama DLL'sini depolamak için geçici konumu kullanmasından kaynaklanıyor olabilir. Bu dosya değiştiğinde, IIS uygulamanın yeni bir sürümünü oluşturduğunuzu ve yeniden başlatmanız gerektiğini anlar; Bu uygulama havuzu sıfırlamayı açıklayabilir.

Önbellekin son kullanma tarihi için, IIS, farklı bir uygulama etki alanında bir şeyi kaldırmaya ve yeniden yüklemeye çalışıyor gibi görünüyor. Yüklendikten sonra bir uygulama etki alanını (sanırım) boşaltmadan bir derlemeyi kaldırmak için bir yol yoktur (bence), bu bunu başarmak için "olağan" yoldur.

Belki de.

+0

Yep. Aslında .Net 4.0'dan başlayarak montajı kaldırmak için bir yol var, ancak bazı kenarları var. Bu dosyayı değiştirdiğini doğrulamak için IISExpress'i Process Monitor ile yakalamaya çalışıyorum. Antivirüs'ün bu dosyayı kontrol ettiği benzer bir sorunu olan bir makale buldum ve bu yeniden başlatmayı başlattı. Yani, bu değişikliğin başlatanını araştırıyorum –

İlgili konular