2013-04-02 2 views
6

में पुनरारंभ करें हमें कोई समस्या है। हम Asp.net वेबफॉर्म एप्लिकेशन (.NET 4.0) के लिए IISExpress 8.0 का उपयोग कर रहे हैं। विंडोज 7 x64 के तहत कॉमप्टर चल रहा है।ApplicationShutdownReason.BuildManagerChange और ApplicationPool IISExpress

कभी-कभी बिना किसी कारण के ApplicationPool पुनरारंभ होता है। मुझे पता है कि यह 15 एएसपीएक्स \ ascx फ़ाइल परिवर्तनों के बाद पुनरारंभ होगा। लेकिन उस स्थिति में यह बिना किसी बदलाव के पुनरारंभ होता है। आवेदन पर हमें इस पुनरारंभ का कारण मिला। यह एप्लिकेशनशूटडाउनReason.BuildManagerChange है।

इंटरनेट में खोजें कुछ उपयोगी विवरण नहीं देंगे। ज्यादातर सभी IISExpress के बजाय आईआईएस का उपयोग करने की सिफारिश करते हैं।

क्या आप जानते हैं कि इसके लिए क्या कारण हो सकता है?

अद्यतन:

नेट 4 स्रोत कोड की गहन जानकारी के इस बंद के दो कारण हैं। उनमें से एक ट्रिगर किया गया है जब किसी ने अस्थायी Asp.net फ़ोल्डर से hash.web फ़ाइल को बदल दिया है। उदाहरण के लिए - "सी: \ विंडोज \ माइक्रोसॉफ्ट.नेट \ फ्रेमवर्क 64 \ v4.0.30319 \ अस्थायी एएसपी.नेट फ़ाइलें \ एप \ a83dcad1 \ be4aa699 \ हैश \ हैश.वेब"

दूसरा कारण यह है कि BuildManager ने कुछ ऑब्जेक्ट बनाया और HttpCache में कैश BuildResult। और फिर यदि यह समाप्त हो गया है तो यह जांचता है कि इस BuildResult को कैश की समाप्ति पर ShutdownAppDomainOnChange की आवश्यकता है। और यदि इसकी आवश्यकता है, तो यह BuildManagerChange शटडाउन को ट्रिगर करता है।

UPDATE2

हमारे मामले को पुनः आरंभ में hash.web परिवर्तन की वजह से किया गया था। लगता है कि IISExpress इसे किसी भी स्रोत कोड परिवर्तन के बिना अपडेट करता है, लेकिन क्यों?

Update3 माइक्रोसॉफ्ट इसके बारे में एक मुद्दा है - https://connect.microsoft.com/VisualStudio/feedback/details/783440/microsoft-visualstudio-web-host-exe-touches-hash-web-and-should-not-be-running वे कहते हैं कि वे विजुअल स्टूडियो 2012 अद्यतन में यह तय 2.

+0

यदि आप विंडोज 7 पर हैं, तो आप पूर्ण उड़ा आईआईएस का उपयोग क्यों नहीं कर रहे हैं? – ashes999

+0

क्योंकि आईआईएस पर कुछ वेब प्रोजेक्ट की कॉन्फ़िगरेशन इतना आसान नहीं है। हम इसे कर सकते हैं, लेकिन फिर हमें प्रत्येक डेवलपर के लिए ऐसा करने की ज़रूरत है। तो, IISExpress के साथ दृष्टिकोण अधिक आसान है, क्योंकि यह एक द्वारा कॉन्फ़िगर किया गया है और अन्य सभी द्वारा उपयोग किया जाता है। –

+0

मेरे अनुभव से, आईआईएस एक्सप्रेस भयानक है। आपके द्वारा उल्लिखित कॉन्फ़िगरेशन कुछ डेवलपर्स को करना है - कोई काम नहीं है। लंबी अवधि में, यह लागत IisExpress अजीबता की लागत से बहुत छोटी है। – ashes999

उत्तर

2

यह एक पूरा जवाब नहीं है, तो ले इसे से जो कुछ भी लाभ उठा सकते हैं आप ।

ऐसा लगता है कि दो चीजें हो रही हैं: hash.web परिवर्तन शायद इसलिए है क्योंकि आईआईएस आपके द्वारा बनाए गए एप्लिकेशन डीएलएल को स्टोर करने के लिए अस्थायी स्थान का उपयोग करता है। जब यह फ़ाइल बदलती है, आईआईएस समझता है कि आपने एप्लिकेशन का एक नया संस्करण बनाया है, और इसे पुनरारंभ करने की आवश्यकता है; जो एप्लिकेशन पूल रीसेट की व्याख्या कर सकता है।

कैश की समाप्ति के लिए, ऐसा लगता है कि आईआईएस एक अलग ऐप डोमेन में कुछ लोड और पुनः लोड करने का प्रयास कर रहा है। ऐप डोमेन को अनलोड किए बिना असेंबली को अनलोड करने के लिए कोई तरीका नहीं है (मुझे लगता है) एक बार लोड होने के बाद, इसलिए यह हासिल करने के लिए यह "सामान्य" तरीका है।

शायद।

+0

हां। असल में नेट 4.0 से शुरू करना असेंबली को अनलोड करने का एक तरीका है, लेकिन इसमें कुछ किनारों हैं। मैं प्रक्रिया मॉनीटर के साथ IISExpress को पकड़ने की कोशिश कर रहा हूं ताकि यह सत्यापित किया जा सके कि वह इस फ़ाइल को बदलता है। मुझे एक ही समस्या के साथ एक लेख मिला कि एंटीवायरस ने इस फ़ाइल की जांच की और यह फिर से शुरू हो गया। इसलिए, मैं इस परिवर्तन के आरंभकर्ता की जांच कर रहा हूं –

संबंधित मुद्दे