इससे कुछ मोड़ और मोड़ आए हैं। मैंने इस उत्तर को ASP.NET Core 2.0 के साथ अद्यतित किया है (26/02/2018 तक) के ।
यह ज्यादातर आधिकारिक दस्तावेज से लिया गया है :
अपने ASP.NET अनुप्रयोग में सेटिंग्स के साथ काम करने के लिए, यह अनुशंसा की जाती है कि आप केवल Configuration
अपने एप्लिकेशन की Startup
कक्षा में ही तत्काल करें । फिर, व्यक्तिगत सेटिंग्स तक पहुंचने के लिए विकल्प पैटर्न का उपयोग करें। मान लीजिए कि हमारे पास एक appsettings.json
फाइल है जो इस तरह दिखाई देती है:
{
"MyConfig": {
"ApplicationName": "MyApp",
"Version": "1.0.0"
}
}
और हमारे पास कॉन्फ़िगरेशन का प्रतिनिधित्व करने वाला एक POCO ऑब्जेक्ट है:
public class MyConfig
{
public string ApplicationName { get; set; }
public int Version { get; set; }
}
अब हम इसमें कॉन्फ़िगरेशन बनाते हैं Startup.cs
:
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
}
ध्यान दें कि .NET कोर 2.0 में डिफ़ॉल्ट रूप से पंजीकृत कियाappsettings.json
जाएगा । हम भी एक रजिस्टर कर सकते हैंappsettings.{Environment}.json
जरूरत पड़ने पर प्रति वातावरण में विन्यास फाइल ।
यदि हम अपने कॉन्फ़िगरेशन को अपने नियंत्रकों को इंजेक्ट करना चाहते हैं, तो हमें इसे रनटाइम के साथ पंजीकृत करना होगा। हम ऐसा करते हैं Startup.ConfigureServices
:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Add functionality to inject IOptions<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
और हम इसे इस तरह इंजेक्ट करते हैं:
public class HomeController : Controller
{
private readonly IOptions<MyConfig> config;
public HomeController(IOptions<MyConfig> config)
{
this.config = config;
}
// GET: /<controller>/
public IActionResult Index() => View(config.Value);
}
पूरी Startup
कक्षा:
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Add functionality to inject IOptions<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
}