2015-01-22 5 views
17

जहां मैं काम करता हूं, हम विकास उद्देश्यों के साथ-साथ स्टेजिंग और उत्पादन वातावरण के लिए एज़ूर वेब साइट्स और एसक्यूएल डेटाबेस बनाते हैं। हम उस वेब साइट से जुड़े डेटाबेस में डेटाबेस कनेक्शन स्ट्रिंग को बदलने के लिए प्रत्येक प्रकाशित प्रोफ़ाइल के लिए web.config ट्रांसफॉर्म बनाते हैं।क्या अलग-अलग प्रकाशन प्रोफाइल के लिए ऐप.कॉन्फिग एक Azure WebJob के लिए बदलना संभव है?

अब, मैं एक Azure WebJob बनाने की कोशिश कर रहा हूं जिसे डेटाबेस में अपडेट करने की आवश्यकता होगी। मैं इसे एक वेब ऐप प्रोजेक्ट पर राइट-क्लिक करके और एक नया Azure WebJob जोड़ने का चयन करके बना देता हूं।

मुझे ऐसा करने की आवश्यकता है जो मुझे इसकी आवश्यकता है, जो SQL डेटाबेस कनेक्शन स्ट्रिंग है जो वेब ऐप का उपयोग करने वाले उसी डेटाबेस को इंगित करता है। मुझे पता है कि इन्हें एज़ूर पोर्टल में सेट किया जा सकता है और कॉन्फ़िगरेशन मैनेजर के साथ पकड़ा जा सकता है, लेकिन मैं इसे WebJob के App.config में प्राप्त करने में सक्षम हूं और आवश्यकतानुसार App.config को बदल सकता हूं।

मैंने इसके लिए धीमी चीता का उपयोग करने की कोशिश की, लेकिन ऐसा लगता है कि आप केवल डीबग और रिलीज कॉन्फ़िगरेशन के लिए एक रूपांतरण कर सकते हैं। http://gunnarpeipman.com/2013/11/using-web-config-transforms-with-app-config-files/

यह आपको बताता है कि मैन्युअल App.config बदल देती है सक्षम करने के लिए .csproj फ़ाइल संपादित करने के लिए:

मैं इस ब्लॉग में निर्दिष्ट चरणों के माध्यम से जाना शुरू कर दिया। हालांकि, यह एक बेहतर समाधान नहीं है, क्योंकि आपको आवश्यक प्रत्येक ट्रांसफॉर्म के लिए प्रोजेक्ट फ़ाइल को मैन्युअल रूप से संपादित करना होगा।

क्या कोई मुझे बता सकता है कि इसे कैसे पूरा किया जाए? क्या यह भी संभव है? या क्या मेरे वेब ऐप की web.config फ़ाइल में मानों को साझा करने का कोई तरीका है जो मुझे पता है कि मुझे उन चीज़ों में परिवर्तित कर दिया जाएगा जिन्हें मुझे चाहिए?

+0

क्या आप सीआई पर्यावरण का उपयोग कर रहे हैं? यदि ऐसा है, तो आप कई बिल्ड कॉन्फ़िगरेशन (उदा। देव, स्टेजिंग) बना सकते हैं और एक स्क्रिप्ट बना सकते हैं जो App.config फ़ाइल से जो कुछ भी आप चाहते हैं उसे संशोधित करने के लिए प्रत्येक बिल्ड पर चलता है। अगर आपको अधिक जानकारी चाहिए, तो मुझे बताएं और मैं एक पूरा उत्तर पोस्ट करूंगा –

+1

हम अभी तक सीआई पर्यावरण का उपयोग नहीं कर रहे हैं। वह जल्द ही आ रहा है। यह एक बहुत अच्छा विचार है, लेकिन हमें जो चाहिए वह एक और समाधान मिला। मुझे एहसास हुआ कि मुझे बिल्कुल बदलाव की जरूरत नहीं है। एक Azure वेबोज़ में configManager.AppSettings में वेबसाइट का नाम है। इसलिए, हम आवश्यकतानुसार प्रत्येक वेबसाइट के लिए app.config में कनेक्शन स्ट्रिंग डालते हैं और फिर वेबसाइट नाम के आधार पर सही एक का चयन करते हैं। मेरी मदद करने के लिए अपने दिन से कुछ समय निकालने के लिए धन्यवाद! –

+0

क्या कॉन्फ़िगरेशन प्रबंधक में अधिक कॉन्फ़िगरेशन बनाना संभव नहीं है? मैंने वेब ऐप्स के लिए पहले से ही कई 'रिलीज' कॉन्फ़िगरेशन बनाए हैं, जो कॉन्फ़िगर ट्रांसफॉर्म का उपयोग करने में सक्षम होने के एकमात्र उद्देश्य से हैं, ताकि वे उसी ब्रांड को प्रकाशित करने के लिए अलग-अलग ब्रांडिंग और कनेक्शन स्ट्रिंग्स के साथ प्रकाशित कर सकें। – idodev

उत्तर

7

जैसा कि @बिनार्ड ने सुझाव दिया है, धीमी चीता web.config या app.config ट्रांसफॉर्म बनाने का एक शानदार तरीका है। एक बार जब आप ट्रांसफॉर्म बनाते हैं, तो आप एक विशिष्ट कॉन्फ़िगरेशन के लिए ट्रांसफॉर्म का पूर्वावलोकन भी कर सकते हैं।

मेरा पसंदीदा तरीका कस्टम कॉन्फ़िगरेशन बनाना है उदा। देव और प्रोड और "धीमी चीता एक्सएमएल ट्रांसफॉर्म" एक्सटेंशन का उपयोग करके देव और प्रोड के लिए डीबग और रिलीज के अलावा परिवर्तनों को बनाते हैं।

एक बार यह चरण पूरा हो जाने के बाद, अगली चुनौती यह सुनिश्चित करना है कि सही कॉन्फ़िगरेशन Azure में निरंतर तैनाती सेटअप द्वारा उठाया गया हो। ऐसा करने के लिए, आपको Azure पोर्टल में "एप्लिकेशन सेटिंग्स" अनुभाग में अपने Azure वेब ऐप से जुड़े कॉन्फ़िगरेशन को सेट करना होगा। उदाहरण:

SCM_BUILD_ARGS=-p:Configuration=Dev 

एक बार इस सेटअप है, Azure में यह वेब एप्लिकेशन के तहत सभी webjobs पिक होगा विन्यास माता पिता वेब एप्लिकेशन में निर्दिष्ट के लिए बदल देती है।

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