2016-08-04 9 views
5

इम वर्तमान में launchSettings.json फ़ाइल का उपयोग करने के लिए आवेदन के वातावरण चर का प्रबंधन करने, इसलिए मेरे Setup.cs फ़ाइल env.IsDevelopmentEnvironment() आदि के रास्ते में वातावरण प्रबंधन कर सकते हैं की कोशिश कर रहानेट कोर - Azure तैनाती कार्य में सेट पर्यावरण चर

मेरा सवाल यह है: वीएसटीएस में, मैं एज़ूर परिनियोजन कार्य पर पर्यावरण परिवर्तनीय ASPNETCORE_ENVIRONMENT सेट करने के बारे में कैसे जा सकता हूं? या इसे मेरे निर्माण चरणों में dotnet publish कार्य में मिला है?

किसी भी मदद की सराहना की जाएगी। अगर मुझे अधिक जानकारी प्रदान करने की ज़रूरत है, तो कृपया मुझे बताएं, क्योंकि मुझे यह भी यकीन नहीं है कि मैंने जो कुछ भी प्रदान किया है, वह सवाल स्पष्ट करने के लिए पर्याप्त है।

चीयर्स,

एडम

+0

तो आप इसे "इसे चलाने से पहले" launchSettings.json "फ़ाइल में" ASPNETCORE_ENVIRONMENT "चर के मान को अपडेट करना चाहते हैं? –

+0

हाँ का क्रमबद्ध करें। मैं यह बताने के लिए संघर्ष कर रहा हूं कि मैं क्या करने की कोशिश कर रहा हूं। असल में, जब vsts में एक बिल्ड कार्य (या रिलीज़ कार्य) सेट अप करते हैं, तो मैं उस बिंदु पर ASPNETCORE_ENVIRONMENT चर सेट करना चाहता हूं, इसलिए जब इसे तैनात किया जाता है तो यह अनिवार्य रूप से 'सही' वातावरण होता है। मूल रूप से, जैसे कि web.config काम को बदलता है। क्या इसका कोई मतलब है? –

+0

यह भी पूरी तरह से संभव है कि मैं इसे पूरी तरह गलत तरीके से देख रहा हूं। नीचे दिए गए @set s उत्तर को देखते हुए, मुझे आश्चर्य है कि क्या मुझे पर्यावरण परिवर्तनीय पूर्व-कॉन्फ़िगर किए गए साइट के साथ साइट सेट अप करनी चाहिए, और बस उस पर तैनाती करें। –

उत्तर

8

कारण ASPNETCORE_ENVIRONMENT एक वातावरण चर रहा है, तो आप सिर्फ यह Azure पर निर्दिष्ट कर सकते हैं। How and where to define an environment variable on azure?

+0

आह धन्यवाद, मैं इसके बाद के करीब के करीब है। मेरा मुद्दा यह है कि मैं इसे VSTS से तैनाती/निर्माण समय पर कैसे सेट करूं :) प्रतिक्रिया के लिए धन्यवाद! –

+0

@AdamGrande क्या आपको कभी भी VSTS से ऐसा करने का कोई तरीका मिला है? मैं वास्तव में पर्यावरण चर के माध्यम से अपनी सभी एप्लिकेशन सेटिंग्स को सेट करना चाहता हूं। सही नामकरण सम्मेलन का पालन करने वाले env vars को प्रभावी ढंग से appsettings.json मानों को ओवरराइड कर दिया जाएगा, यह दूसरी जेसन फ़ाइल या इसी तरह की टोकननाइज़ करने की आवश्यकता को हटा देगा। – Matthew

+0

बस इस उत्तर पर जोर देने के लिए, यह भी आधिकारिक दस्तावेज Azure के लिए सुझाव देता है: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments#setting-the-environment – Daniel

0

पर SO SO उत्तर देखें, आप Replace Token एक्सटेंशन इंस्टॉल कर सकते हैं और फिर अपनी बिल्ड/रिलीज़ परिभाषा में एक स्थान टोकन कार्य जोड़ सकते हैं। यह कार्य किसी फ़ाइल में तारों को प्रतिस्थापित/वैरिएबल परिभाषा में जोड़े गए वेरिएबल वैल्यू के साथ प्रतिस्थापित कर सकता है।

1

यदि आप अपनी तैनाती प्रक्रिया idempotent रखना चाहते हैं, तो मैं Azure वेब ऐप पर सेट करने के लिए इस परिनियोजन चरण का उपयोग करने का सुझाव दूंगा।

https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration

तकनीकी तौर पर इसे रिलीज सेटिंग्स web.config करने के साथ ही कहते हैं, जो एक कोर अनुप्रयोग के लिए आवश्यक नहीं है, लेकिन महत्वपूर्ण बात, यह भी Azure मेजबान के लिए पर्यावरण चर सेट।

बशर्ते आप अपने Startup.cs में वातावरण चर का उपयोग करने के निर्दिष्ट किए हैं:

public Startup(IHostingEnvironment env) 
    { 
     var builder = new ConfigurationBuilder() 
         .SetBasePath(env.ContentRootPath) 
         .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)        
         .AddEnvironmentVariables(); //override settings with environment variables 

     var config = builder.Build(); 

     Configuration = config; 

    } 

तो अगर आप एक रिलीज चर है: appsetting.ASPNETCORE_ENVIRONMENT = रिलीज, आपको लगता है कि $ env मिलेगा: ASPNETCORE_ENVIRONMENT वास्तव में हो जाएगा अगर आप Kudu पर PowerShell कंसोल के माध्यम से जांच रहे हैं तो "रिलीज"।

मैं वास्तव में इस ऐप का उपयोग कर रहा हूं ताकि मैं अपने सभी एप्सेटिंग्स.जेसन वैरिएबल के साथ-साथ एएसपीएनईटीसीओआरओएनआईवीरोनमेंट को कुछ ऐपेटिंग्स को टोकनज़ करने के बजाय रिलीज-टाइम पर ओवरराइड कर सकूं। {Environment} .json फ़ाइल। मैं अपने वीएसटीएस रिलीज वैरिएबल नामों में सही नामकरण सम्मेलन का उपयोग करके पर्यावरण चर के साथ ओवरराइड कर सकता हूं।

उदाहरण के लिए, मेरी appsettings.json इस संरचना है यदि:

{ 
 
    settings: { 
 
    secret: { 
 
     foo: "bar" 
 
    } 
 
    } 
 
}

मैं जैसे एक रिलीज चर के साथ ओवरराइड कर सकते हैं:

appsetting.settings: रहस्य: foo = "बार"

फिर $ env जांचें: सेटिंग्स: गुप्त: तैनाती के बाद Azure वेब ऐप पर foo

मेरे स्रोत में कुछ भी अतिरिक्त किए बिना या एक वेब परिनियोजन पैकेज को उजागर करने, कॉन्फ़िगरेशन फ़ाइल को टोकन करने और फिर msdeploy से पहले पुनः ज़िप करने के बिना, मुझे enviornment-specific configurations मिल गया है।

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