आईआईएस वेब सर्वर पर होस्ट किए गए मेरे वेब एप्लिकेशन (प्रोडक्शन, स्टैगिंग, टेस्ट) हैं। इसलिए ASPNETCORE_ENVIRONMENT ऑपरेटिव सिस्टम एनवायरमेंट वेरिएबल पर भरोसा करना संभव नहीं था, क्योंकि इसे एक विशिष्ट मूल्य पर सेट करना (उदाहरण के लिए STAGING) का दूसरों के अनुप्रयोगों पर प्रभाव पड़ता है।
काम के इर्द-गिर्द, मैंने अपने विज़ुअलस्टडियो समाधान के भीतर एक कस्टम फ़ाइल (envsettings.json) को परिभाषित किया:
निम्नलिखित सामग्री के साथ:
{
// Possible string values reported below. When empty it use ENV variable value or Visual Studio setting.
// - Production
// - Staging
// - Test
// - Development
"ASPNETCORE_ENVIRONMENT": ""
}
फिर, मेरे आवेदन के प्रकार (उत्पादन, मंचन या परीक्षण) के आधार पर मैंने इस फ़ाइल को निर्धारित रूप से सेट किया: मान लें कि मैं TEST अनुप्रयोग को लागू कर रहा हूं, मेरे पास होगा:
"ASPNETCORE_ENVIRONMENT": "Test"
उसके बाद, Program.cs फ़ाइल में केवल इस मान को पुनः प्राप्त करें और फिर webHostBuilder का वातावरण सेट करें:
public class Program
{
public static void Main(string[] args)
{
var currentDirectoryPath = Directory.GetCurrentDirectory();
var envSettingsPath = Path.Combine(currentDirectoryPath, "envsettings.json");
var envSettings = JObject.Parse(File.ReadAllText(envSettingsPath));
var enviromentValue = envSettings["ASPNETCORE_ENVIRONMENT"].ToString();
var webHostBuilder = new WebHostBuilder()
.UseKestrel()
.CaptureStartupErrors(true)
.UseSetting("detailedErrors", "true")
.UseContentRoot(currentDirectoryPath)
.UseIISIntegration()
.UseStartup<Startup>();
// If none is set it use Operative System hosting enviroment
if (!string.IsNullOrWhiteSpace(enviromentValue))
{
webHostBuilder.UseEnvironment(enviromentValue);
}
var host = webHostBuilder.Build();
host.Run();
}
}
प्रकाशनों में envsettings.json को शामिल करना याद रखें (project.json):
"publishOptions":
{
"include":
[
"wwwroot",
"Views",
"Areas/**/Views",
"envsettings.json",
"appsettings.json",
"appsettings*.json",
"web.config"
]
},
यह समाधान मुझे स्वतंत्र रूप से एक ही IIS पर होस्ट किया गया ASP.NET कोर एप्लिकेशन को स्वतंत्र रूप से परिवर्तनीय चर मान से मुक्त करने के लिए बनाता है।
Properties\launchSettings.json
का अनुकरण करने के लिए उपयोग कर सकते हैं ।