Appcmd के माध्यम से IIS पर भौतिक पथ बदलना सक्रिय नहीं है


9

हम आईआईएस 7.5 पर एक मुद्दे पर आए हैं जहां हमारे पास एक सरल तैनाती प्रणाली है जिसमें निम्नलिखित शामिल हैं:

तीन फ़ोल्डर्स से मिलकर नए वेबरोट की ज़िप-फ़ाइल बनाएँ:

Api
Site
Manager

यह एक नए फ़ोल्डर में अनज़िप किया गया है (मान लें कि हम इसे "SITE_REV1" कहते हैं), और इसमें एक स्क्रिप्ट है जो निम्नलिखित को आमंत्रित करती है (प्रत्येक वेबरोट के लिए एक):

C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"

यह आमतौर पर 9/10 समय में काम करता है। कुछ मामलों में, वेबरोट को सही तरीके से अपडेट किया गया लगता है (यदि मैं IIS प्रबंधक में मूल सेटिंग्स का निरीक्षण करता हूं, तो पथ सही दिखता है), लेकिन प्रश्न में चल रही साइट वास्तव में पुराने स्थान पर इंगित की गई है। एकमात्र तरीका जिसे हमने "ठीक करना" प्रबंधित किया है, वह है IIS-रीसेट चलाकर। यह विचाराधीन एप्लिकेशन पूल को रीसायकल करने के लिए पर्याप्त नहीं है।

कभी-कभी ऐसा लगता है कि रिबूट करना भी आवश्यक है, लेकिन मुझे 100% यकीन नहीं है कि यह सटीक है (यह हमेशा स्वयं नहीं है जो समस्या को ठीक कर रहा था)।

मैंने पॉवरशेल और वेब-प्रशासन मॉड्यूल का उपयोग करते हुए स्क्रिप्ट को फिर से लिखा है, यह उम्मीद करते हुए कि ऐप्पीडक में एक गड़बड़ थी, लेकिन वही समस्या होती है।

Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"

क्या किसी ने ऐसा कुछ अनुभव किया है? किसी को क्या हो रहा है पर एक सुराग है, और क्या मैं इस मुद्दे को रोकने के लिए कोशिश कर सकते हैं? IIS रीसेट करना वास्तव में हमारे लिए एक अच्छा विकल्प नहीं है, क्योंकि यह हर बार जब हम एक ही साइट पर परिवर्तन की कोशिश करते हैं और तैनात करते हैं, तो सर्वर पर सभी साइटों को प्रभावित करेगा।

संपादित करें: हमने पहचाना है कि IIS प्रबंधक में साइट का एक स्टार्ट / स्टॉप (एप्लिकेशन पूल नहीं है) गलत तरीके से भौतिक पथ को हल करता है, लेकिन अगर मैं साइट का उपयोग कर ऐप को बंद कर देता हूं, तो भौतिक पथ को बदल देता हूं, और फिर इसे शुरू कर देता हूं, फिर भी मैं पीड़ित हूं वही मुद्दे। मैं एक रिक्त स्थान पर हूं ...


1
उन समय के लिए जब यह काम नहीं करता है, क्या यह संभव है कि पुराने एप्लिकेशन पूल द्वारा ओवरलैपिंग रोटेशन के माध्यम से अनुरोध मौजूदा थे ? आपकी साइट की अपटाइम आवश्यकताओं के बारे में निश्चित नहीं है, लेकिन आप ओवरलैपिंग रोटेशन को अक्षम करने का प्रयास कर सकते हैं और अपनी तैनाती स्क्रिप्ट में ऐप पूल रीसायकल कमांड भी शामिल कर सकते हैं।
विस्फोट

नहीं, बाद के सभी अनुरोध पुराने वेबरोट से प्राप्त किए जाते हैं, यहां तक ​​कि एक एप्लिकेशन रीसायकल भी पुराने रूट से एप्लिकेशन को पुनः लोड करेगा। एक IIS रीसेट एकमात्र तरीका है जिसे हम इसे पुनर्स्थापित करने में कामयाब रहे हैं। यह
ApplicationHost.config

मुझे ApplicationHost.config में इसका उल्लेख नहीं मिल रहा है, इसलिए मुझे लगता है कि यह डिफ़ॉल्ट "गलत" है?
जिशि

ठीक है, सोच रहा था कि अगर डिस्क्लेमर हटा दिया जाए = सत्य, तो पुराना ऐप पूल लंबे समय तक चलने वाले धागे या कुछ और के कारण बंद नहीं हो सकता है। यही कारण है कि IIS रीसेट को पूरी तरह से साफ़ करने की आवश्यकता होगी। दिलचस्प सवाल - यह देखने के लिए उत्सुक होंगे कि उत्तर क्या दिखाते हैं।
विस्फोट

ऐप पूल रीसायकल को ध्यान में रखते हुए स्टॉप / स्टार्ट के समान नहीं है। क्या आपने यह तरीका आजमाया है? ध्यान रखें, यह सभी वर्तमान कनेक्शनों को मार देगा और साइट को अनुपलब्ध बना देगा (त्रुटि 500) जब तक कि ऐप पूल को फिर से शुरू नहीं किया जाता है।
जॉन होमर

जवाबों:


0

क्या IIS प्रबंधक से भौतिक पथ को सही और तुरंत काम करना बदल जाता है?

आप निम्न कमांड को आज़माना चाह सकते हैं। अलग-अलग सिंटैक्स, एक ही परिणाम होना चाहिए, लेकिन शायद यह आंतरिक रूप से थोड़ा भिन्न काम करता है जिससे IIS परिवर्तनों को उठा सकता है (बेहतर):

C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"


AFAIK हमें कभी भी कोई समस्या नहीं हुई जब हम इसे मैन्युअल रूप से IIS प्रबंधक में बदल देते हैं, केवल प्रोग्रामिक रूप से।
जिशी

0

एक ऐप पूल रीसायकल प्रति साइट के आधार पर पर्याप्त होना चाहिए। ये स्वतंत्र प्रक्रियाएं हैं। बहुत बार लेख और प्रक्रिया iisreset के उपयोग को बढ़ावा देती हैं। क्या एक साइट के लिए ऐप पूल को रोकना / शुरू करना एक विकल्प है? क्या यह एकल सर्वर समाधान है और क्या आप साइट के लिए डाउनटाइम कम करने की कोशिश कर रहे हैं? कॉन्फ़िगरेशन परिवर्तन पर रीसाइक्लिंग को अक्षम करने का विकल्प है। फिर आप मैन्युअल रूप से रीसायकल कर सकते हैं। जब समस्या होती है, तो ApplicationHost.config में क्या सूचीबद्ध है?


मैं 100% निश्चित नहीं हूं, लेकिन चूंकि IIS प्रबंधक नए पथ को सूचीबद्ध करता है, इसलिए मुझे लगता है कि ApplicationHost.config अद्यतित है। हालाँकि, जब प्रक्रिया पुनरावृत्ति होती है, तो यह नए कॉन्फ़िगर किए गए मानों का उपयोग नहीं करता है। चूंकि यह कभी-कभार ही होता है, इसलिए समय पर इसका निवारण करना कठिन होता है।
जिशी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.