2013-01-15 14 views
6

मेरे पास वीएस2012 में एक वेब एप्लिकेशन प्रोजेक्ट है जिसे मैं "वेब परिनियोजन पैकेज" का उपयोग कर प्रकाशित कर रहा हूं। मैं इस पैकेज को एप-पूल सेटिंग्स, विशेष रूप से बनाने के लिए चाहता हूं एक आईआईएस ऐप-पूल और इसे नए बनाए गए एप्लिकेशन को असाइन करना चाहता हूं।वीएस2012 वेब डिप्लॉय पैकेज एप्लिकेशन पूल बनाने के लिए

मैं विकल्प से परिचित हूँ उपलब्ध जब परियोजना एक आईआईएस उदाहरण (नहीं आईआईएस एक्सप्रेस) का उपयोग करने के लिए कॉन्फ़िगर किया गया "पूल आवेदन इस वेब परियोजना द्वारा इस्तेमाल किया सेटिंग्स शामिल करें", लेकिन IIS कॉन्फ़िगरेशन है परियोजना के हिस्सा नहीं फ़ाइल, और इस प्रकार स्रोत नियंत्रित नहीं है। क्या होता है जब कोई ऐसी मशीन पर तैनाती पैकेज बनाता है जिसकी आईआईएस सावधानीपूर्वक कॉन्फ़िगर नहीं की गई हो? आदर्श नहीं।

और फिर, मैं अपने वेब परिनियोजन पैकेज में AppPool सेटिंग्स प्राप्त करने के बारे में कैसे जा सकता हूं? मैं समझता हूं कि appPoolConfig प्रदाता केवल आईआईएस 7 + है, मैं उस सीमा के साथ ठीक हूं। मैंने अतीत में इस मुद्दे के खिलाफ अपने सिर को टक्कर लगी है और कभी समाधान नहीं मिला है। 18 महीने बाद, हमारे पास एक नया विजुअल स्टूडियो संस्करण है, और एक नई वेब-प्रकाशन-पाइपलाइन है, क्या इसे संबोधित करने के लिए नए विकल्प हैं? या शायद जब मैंने पहली बार इस समस्या का सामना किया तो मुझे कुछ याद आया?

  1. एक आईआईएस उदाहरण से सेटिंग समन्वयित कर अपने प्रोजेक्ट को कॉन्फ़िगर करें:

    संपादित

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

  2. archive.xml को संशोधित करने के लिए वेब-प्रकाशन-पाइपलाइन (WPP) में कुछ डालें। मैंने अतीत में इस के साथ खिलवाड़ किया है और सीमित सफलता मिली है। एक समस्या यह है कि पाइपलाइन सीधे archive.xml फ़ाइल पर काम करने के साथ सहकारी नहीं है, एक और समस्या कुछ अधिक गुप्त गुण शामिल हैं, जैसे MSDeploy.MSDeployProviderOptions जिसमें कुछ बेस 64 एन्कोडेड बाइनरी दिखाई देती है? कोई विचार नहीं कि वहां क्या रखा जाए।
  3. एक मौजूदा "प्रदाता" ढूंढें जो मैं चाहता हूं कि कर सकता हूं। मैं यहां भाग्य से बाहर हो सकता हूं, appPoolConfig प्रदाता केवल आईआईएस को पढ़ना/लिखना चाहता है, कहें, सेटिंग्स की एक एक्सएमएल फ़ाइल नहीं। क्या कोई अन्यथा जानता है?
  4. मैनिफेस्ट आउटपुट प्रविष्टियों का उत्पादन करने के लिए अपना खुद का "प्रदाता" लिखें। मुझे यकीन नहीं है, क्या एक कस्टम प्रदाता लिखना संभव है जो किसी मौजूदा प्रदाता के नाम का उपयोग करके एक मैनिफेस्ट को लिखता है? जैसा कि, MyCustomPoolProviderappPoolConfig अनुभागों को एक मेनिफेस्ट में लिखता है? यह एक संभावित दर्दनाक व्यायाम की तरह लगता है जो काम कर सकता है या नहीं। क्या मुझे अभी भी MSDeploy.MSDeployProviderOptions में जो कुछ भी जा रहा है, उसके एन्कोडिंग को समझने की आवश्यकता होगी?

मुझे यह महसूस हो रहा है कि मैं जो काम करने की कोशिश कर रहा हूं उसके लिए वेब परिनियोजन के साथ मौलिक बाधा है, यह कितनी सख्ती से "प्रदाताओं" पर निर्भर करती है। पूर्व-मौजूदा प्रदाताओं को बड़े पैमाने पर आईआईएस सिंक्रनाइज़ेशन, प्राथमिक विकास और प्रकाशन के लिए डिज़ाइन किया गया है। ऐसा इसलिए होता है कि इनमें से कुछ प्रदाता अपेक्षाकृत आसानी से एमएसबिल्ड के माध्यम से घुस सकते हैं, लेकिन बहुमत आईआईएस से डेटा खींचने पर जोर देते हैं, और यही वह है।

उत्तर

1

आप appPoolConfig प्रदाता की अपनी समझ में सही हैं, जिसमें यह केवल ऐप पूल के बीच सिंक हो सकता है और सीधे कॉन्फ़िगरेशन प्रदान नहीं किया जा सकता है। आप संभावित रूप से क्या कर सकते हैं package रूप में यानी प्रश्न में ऐपपूल की प्रतिलिपि रखें (यानी।msdeploy -verb:sync -source:appPoolConfig=PoolName -dest:package=apppool.zip) और पाइपलाइन को हाइजैक करने का प्रयास करें ताकि MSDeploy कॉल एप्लिकेशन सामग्री को पैकेज में जोड़ दे, जिससे मौजूदा सामग्री वहां जा सके।

वैकल्पिक रूप से, आप हमेशा पैकेज को अलग रख सकते हैं और MSDeploy को अलग-अलग कॉल के साथ तैनात कर सकते हैं।

एफवाईआई, MSDeploy.MSDeployProviderOptions प्रदाता को आपूर्ति किए जाने वाले प्रदाताओं को प्रदान किए गए पैरामीटर का एक एन्कोडेड संस्करण है। उदाहरण के लिए, -source:dirPath=c:\,ignoreErrors=0x10293847 -dest:package=package.zipignoreErrors मान पैकेज करेगा।

+0

'MSDeploy.MSDeployProviderOptions' के लिए एन्कोडिंग पैटर्न पर कोई संकेत? ऐसा नहीं है कि यह कुछ भी आसानी से डब्ल्यूपीपी पाइपलाइन में इंजेक्ट कर सकता है, लेकिन 'archive.xml' की सामग्री को सीधे समायोजित करने में सक्षम होने से बहुत लचीलापन मिल जाएगा। प्रदाताओं के बारे में भूल जाओ, कोई ऐसा टूल बना सकता है जो आवश्यक एक्सएमएल उत्पन्न करता है, इसे बंडल करता है, और आप तैनात करने के लिए अच्छे हैं। – Snixtor

+0

बंडल archive.xml का प्रारूप अपरिभाषित है। हालांकि, आप संभावित रूप से स्रोत अभिव्यक्ति में * आपके तत्वों (minus MSDeployProviderOptions) को इंजेक्ट कर सकते हैं * पहले * WPP MSDeploy को कॉल करता है। –

+0

स्रोत मेनिफेस्ट प्रदाता * पढ़ने * विकल्प का संग्रह होना आवश्यक है, है ना? जैसा कि, एक स्रोत मेनिफेस्ट में एक appPoolConfig अनुभाग अभी भी आईआईएस से कोशिश करने और पढ़ने के लिए जा रहा है, यह केवल प्रदाता की प्रकृति है। – Snixtor

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