C# (.NET) अनुप्रयोग कॉन्फ़िगरेशन: Microsoft.Extensions.Configuration लाइब्रेरी के लिए पूर्ण गाइड
C# और .NET में आधुनिक अनुप्रयोगों को सेटिंग्स के लचीले प्रबंधन की आवश्यकता होती है: DB कनेक्शन स्ट्रिंग्स, बाहरी सेवाओं के URL, लॉगिंग पैरामीटर आदि। Microsoft.Extensions.Configuration लाइब्रेरी कॉन्फ़िगरेशन के साथ काम करने के लिए एक शक्तिशाली और एकीकृत तंत्र प्रदान करती है। यह कई डेटा स्रोतों (JSON, XML, पर्यावरण चर, कमांड लाइन तर्क) का समर्थन करती है और उन्हें एक ही पदानुक्रम में संयोजित करने की अनुमति देती है।
लाइब्रेरी की मुख्य विशेषताएं
- बहु-स्तरीय विलय — विभिन्न स्रोतों की सेटिंग्स एक एकल ऑब्जेक्ट में संयोजित होती हैं।
- स्रोत प्राथमिकता — अंतिम जोड़ा गया स्रोत पिछले स्रोतों को ओवरराइड करता है।
- क्लासेस से बाइंडिंग (Options pattern) — कॉन्फ़िगरेशन से POCO ऑब्जेक्ट्स का स्वचालित भरण।
- गतिशील अद्यतन — एप्लिकेशन को पुनरारंभ किए बिना फ़ाइलों को फिर से पढ़ने का समर्थन।
- सुरक्षा — संवेदनशील डेटा को पर्यावरण चर या Azure Key Vault में स्थानांतरित किया जा सकता है।
मूल उपयोग: appsettings.json से पढ़ना
प्रोजेक्ट की रूट में appsettings.json फ़ाइल बनाएं:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning" } }, "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=mydb;User Id=sa;Password=***;" }, "AppSettings": { "AppName": "MyApp", "MaxRetries": 3, "FeatureFlags": { "EnableNewUI": true, "EnableAnalytics": false } }}कोड में कॉन्फ़िगरेशन लोड करें:
using Microsoft.Extensions.Configuration;
var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build();
// सरल मान पढ़नाstring appName = configuration["AppSettings:AppName"];int maxRetries = int.Parse(configuration["AppSettings:MaxRetries"]);
// नेस्टेड सेक्शन पढ़नाvar loggingSection = configuration.GetSection("Logging:LogLevel");string defaultLevel = loggingSection["Default"];
// कनेक्शन स्ट्रिंग पढ़नाstring connString = configuration.GetConnectionString("DefaultConnection");
Console.WriteLine($"एप्लिकेशन: {appName}, Retries: {maxRetries}");स्रोतों की प्राथमिकता और विलय
आप कई स्रोतों को संयोजित कर सकते हैं। उदाहरण के लिए, पहले JSON लोड करें, फिर पर्यावरण चर के माध्यम से अलग-अलग पैरामीटर ओवरराइड करें:
var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) // Development/Production के लिए .AddEnvironmentVariables() // पर्यावरण चरों की उच्चतम प्राथमिकता है .AddCommandLine(args) // कमांड लाइन तर्क — सर्वोच्च प्राथमिकता .Build();सख्ती से टाइप किए गए क्लासेस से बाइंडिंग (Options Pattern)
कॉन्फ़िगरेशन सेक्शन के लिए एक क्लास बनाएं:
public class AppSettings{ public string AppName { get; set; } public int MaxRetries { get; set; } public FeatureFlags FeatureFlags { get; set; }}
public class FeatureFlags{ public bool EnableNewUI { get; set; } public bool EnableAnalytics { get; set; }}फिर इसे DI-कंटेनर का उपयोग करके Program.cs में बाइंड करें:
// सेवाओं का पंजीकरणbuilder.Services.Configure<AppSettings>( builder.Configuration.GetSection("AppSettings"));
// क्लास में उपयोग (उदाहरण के लिए, कंट्रोलर में)public class HomeController : Controller{ private readonly AppSettings _settings; public HomeController(IOpti