के साथ इंट्रा-वेबरोल संचार (netTcp बाइंडिंग) मुझे विंडोज़ एज़ूर प्रोजेक्ट में ऑन-द-फ्लाई पर कुछ कॉन्फ़िगरेशन सेटिंग्स बदलने की आवश्यकता है - और उन्हें वेब सेवा कॉल के माध्यम से बदला जाना चाहिए (एप्लिकेशन की कॉन्फ़िगरेशन अपडेट करना या तो मंच एपीआई या एज़ूर प्रबंधन साइट के माध्यम से यहां एक विकल्प नहीं है)।Azure: पूर्ण-आईआईएस
इस परियोजना में कई वेब और कार्यकर्ता भूमिकाएं हैं - जिनमें से सभी को बदलते समय नई कॉन्फ़िगरेशन के बारे में जानना होगा।
विन्यास टिकाऊ भंडारण के लिए जारी है, और यह एक स्थिर चर में रनटाइम के दौरान भी कैश किया जाता है।
मेरा समाधान मेरी भूमिकाओं पर एक आंतरिक (टीसीपी) एंडपॉइंट बनाना था, और उन भूमिकाओं के भीतर सभी भूमिकाओं और उदाहरणों के माध्यम से लूप करने के लिए इसका उपयोग करें, फ्लाई पर क्लाइंट बनाएं, और नई सेटिंग के बारे में उदाहरण बताएं । (बहुत अधिक समान: http://msdn.microsoft.com/en-us/gg457891)
पहले मैंने वेबरोल की रोलएन्ट्रीपॉइंट में सर्विसहोस्ट शुरू किया ... और मैं उलझन में था कि जब मैं संचार के माध्यम से कदम उठाता था तो स्थिर सब कुछ ठीक लग रहा था (स्थैतिक चर जहां सही ढंग से सेट हो रहा है) - फिर भी जब मैं अन्य webservice कॉल करता हूं, तो स्थैतिक चर को "भूल गया" लग रहा था जो मैंने इसे सेट किया था।
यह स्थानीय रूप से और Azure स्टेजिंग वातावरण दोनों में मामला था।
इस बिंदु पर मुझे एहसास हुआ कि चूंकि हम पूर्ण-आईआईएस मोड का उपयोग कर रहे हैं, इसलिए रोलएन्ट्रीपॉइंट और वेब सेवाएं दो अलग-अलग प्रक्रियाओं में चल रही थीं - एक एज़ूर के स्टब में और एक आईआईएस में।
"कोई समस्या नहीं है" मैंने कहा, मैं बस कोड की रेखा को स्थानांतरित करूंगा जो मेरे रोलएन्ट्रीपॉइंट से ServiceHost को global.asax में शुरू करता है - जिस बिंदु पर सर्विसहोस्ट उसी प्रक्रिया में शुरू हो जाएगा जैसा बाकी है साइट के - और स्थिर चर समान होंगे।
यहां मुझे समस्या है; यह देव पर्यावरण में चल रही मेरी स्थानीय मशीन पर बहुत अच्छा काम करता है। जैसे ही मैं स्टेजिंग पर तैनात करता हूं, मुझे त्रुटि ईमेल प्राप्त करना शुरू होता है कि सेवा से कनेक्ट करने के लिए उपयोग किया जाने वाला चैनल बंद नहीं किया जा सकता क्योंकि यह "दोषपूर्ण स्थिति" में है।
प्रश्न:
- क्या बनाम देव वातावरण जाता है कि इस के कारण Azure के बारे में अलग है?
- मैं समस्या को ठीक या हल कैसे कर सकता हूं?
- क्या किसी के पास कोई और सामान्य सलाह है कि मुझे और अधिक वर्णनात्मक त्रुटि प्राप्त करने के बारे में क्या जाना चाहिए ... क्या मुझे यह प्राप्त करने के लिए Azure में पूर्ण WCF डायग्नोस्टिक्स सक्षम करना है, या अपवाद विवरण पर मुझे कुछ और तरीका मिल सकता है ?
फ़ॉलो-अप:
गैर HTTP सक्रियण Azure WebRoles पर डिफ़ॉल्ट रूप से स्थापित नहीं है:
वाया दूरस्थ डेस्कटॉप मैं कई दिलचस्प बातें सीखा है। मेरा मानना है कि इसे स्टार्टअप स्क्रिप्ट के माध्यम से दूर किया जा सकता है:
प्रारंभ/w pkgmgr/iu: डब्ल्यूसीएफ-गैरएचटीटीपी-सक्रियण;
वेब भूमिका से आईआईएस में बनाई गई वेबसाइट में net.tcp प्रोटोकॉल डिफ़ॉल्ट रूप से सक्षम नहीं है।मैं भी मानते हैं कि यह एक स्टार्टअप स्क्रिप्ट के साथ दूर किया जा सकता:
% systemroot% \ system32 \ inetsrv \ appcmd.exe सेट एप्लिकेशन "वेबसाइट का नाम यहाँ" /enabledProtocols:https,http,net.tcp
मेरे पास इस तरह से लेने का समय नहीं है, क्योंकि समय सीमा ने मुझे कुछ कामकाज अस्थायी रूप से लागू करने के लिए मजबूर किया है।
कुछ उपयोगी इस विषय से संबंधित लिंक:
http://msdn.microsoft.com/en-us/magazine/cc163357.aspx
http://forums.iis.net/t/1160443.aspx
http://msdn.microsoft.com/en-us/library/ms731053.aspx
मुझे नहीं पता कि इस समस्या का समाधान क्या है, लेकिन मुझे ऐसा कुछ मिला है जो बहुत समान है: http://stackoverflow.com/questions/5956814/unable-to-host-a-service-bus- wcf-host-in-iis-on-azure – knightpfhor