5

जब मैं स्थानीय रूप से वीएस कोड का उपयोग कर विकास कर रहा हूं, तो ड्राइव पोर्ट 3000 का उपयोग करने जा रहा हूं क्योंकि मैं एक हिप्स्टर हूं। गैर-हिपस्टर्स इसे सर्वर पर पोर्ट 8080 पर चाहते हैं। यह अच्छा है, हमें यह मिला।पर्यावरण विशिष्ट सेटिंग्स जैसे कि UseUrls

public static void Main(string[] args) 
{ 
    var config = new ConfigurationBuilder() 
     .AddJsonFile("hosting.json", optional: true) 
     .AddCommandLine(args) 
     .Build(); 

    var host = new WebHostBuilder() 
     .UseConfiguration(config) 
     .UseKestrel() 
     .Configure(app => 
     { 
      app.Run(async (context) => await context.Response.WriteAsync("Hi!")); 
     }) 
     .Build(); 

    host.Run(); 
} 

मैं hosting.json उपयोग करने के लिए नहीं करना चाहती: माइक्रोसॉफ्ट डॉक्स मुझे निम्नलिखित उदाहरण दे। मुझे वह क्यों चाहिए? मेरे पास इस स्थिति के लिए appsettings.{environment}.json फ़ाइल है। मीठा, मैं बस उस बुरे लड़के को

public static void Main(string[] args) 
{ 
    var config = new ConfigurationBuilder() 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
     .AddCommandLine(args) 
     .Build(); 

संकलक त्रुटि क्या है? env वर्तमान संदर्भ में मौजूद नहीं है। यह केवल Startup.cs फ़ाइल में मौजूद है - जिसे स्टार्टअप पर नहीं कहा जाता है, लेकिन से स्टार्टअप फ़ाइल, Program.cs सॉर्जरी के साथ कहा जाता है।

तो, मैं इस समस्या को कैसे हल करूं? मैं अपने पर्यावरण-विशिष्ट होस्टिंग सेटिंग्स को अपने पर्यावरण-विशिष्ट appsettings.json में कैसे संग्रहीत कर सकता हूं, और बाद में में WebHostBuilder के माध्यम से अपने पर्यावरण-विशिष्ट वेब होस्ट को बनाने के दौरान इसका उपयोग कर सकता हूं?

+0

आप इसे चलाने के लिए launchSettings.json का उपयोग कर सकते हैं। – Lutando

+0

बनाम बनाम, लेकिन किसी भी मामले में एक विचार-अज्ञेय समाधान चाहते हैं –

उत्तर

7

यह संभव है। Program.cs में WebHostBuilder और ConfigurationBuilder को बनाकर here दिए गए उत्तर पर विस्तार करना, होस्ट वातावरण तक पहुंच बनाना संभव है और फिर होस्ट-यूआरएल और पोर्ट को पर्यावरण-विशिष्ट ऐप्स सेटिंग्स में कॉन्फ़िगर करना संभव है।

एक appsettings.json मान लिया जाये और एक apppsettings.Development.json निम्नलिखित के साथ एक फ़ाइल:

"hostUrl": "http://*:<port number here>" 

निम्नलिखित के साथ मुख्य संशोधित करें:

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder(); 
    var env = host.GetSetting("environment"); 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(Directory.GetCurrentDirectory()) 
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{env}.json", optional: true) 
     .AddEnvironmentVariables(); 
    var configuration = builder.Build(); 

    host.UseKestrel() 
     .UseUrls(configuration["hostUrl"]) 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseStartup<Startup>() 
     .Build() 
     .Run(); 
} 

इस कोड, स्टार्टअप का उपयोग करना। सीएस को अभी भी अपनी कॉन्फ़िगरेशन प्रॉपर्टी का सार्वजनिक रूप से खुलासा करने के लिए अपने कॉन्फ़िगरेशनबिल्डर को घोषित करने की आवश्यकता होगी।

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