asp.net-core
विन्यास
खोज…
परिचय
Asp.net कोर कॉन्फ़िगरेशन सार प्रदान करता है। वे आपको विभिन्न स्रोतों से कॉन्फ़िगरेशन सेटिंग्स को लोड करने और एक अंतिम कॉन्फ़िगरेशन मॉडल बनाने की अनुमति देते हैं जो तब आपके एप्लिकेशन द्वारा उपभोग किया जा सकता है।
वाक्य - विन्यास
-
IConfiguration
-
string this[string key] { get; set; }
-
IEnumerable<IConfigurationSection> GetChildren();
-
IConfigurationSection GetSection(string key);
निर्भरता इंजेक्शन का उपयोग करके विन्यास तक पहुँचना
अनुशंसित दृष्टिकोण ऐसा करने से बचना होगा और इसके बजाय IOptions<TOptions>
और IServiceCollection.Configure<TOptions>
।
उस ने कहा, यह अभी भी बहुत सीधा है IConfigurationRoot
उपलब्ध अनुप्रयोग को व्यापक बनाने के लिए।
Startup.cs कंस्ट्रक्टर में कॉन्फ़िगरेशन बनाने के लिए आपके पास निम्न कोड होना चाहिए,
Configuration = builder.Build();
यहां Configuration
IConfigurationRoot
का एक उदाहरण है, और इस उदाहरण को एक कॉन्फ़िगर के रूप में सेवा संग्रह में कॉन्फ़िगर करने के लिए ConfigureServices विधि, Startup.cs,
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfigurationRoot>(provider => Configuration);
उदाहरण के लिए, अब आप नियंत्रक / सेवा में कॉन्फ़िगरेशन का उपयोग कर सकते हैं
public MyController(IConfigurationRoot config){
var setting1= config.GetValue<string>("Setting1")
}
शुरू करना
इस उदाहरण में हम बताएंगे कि जब आप किसी नई परियोजना को आगे बढ़ाते हैं तो क्या होता है।
पहली बात, निम्न निर्भरताएँ आपको प्रोजेक्ट में जोड़ दी जाएंगी (वर्तमान में project.json
फ़ाइल):
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
यह आपकी Startup.cs
फ़ाइल में एक कंस्ट्रक्टर भी बनाएगा जो ConfigurationBuilder
फ़्लू एपी का उपयोग करके ConfigurationBuilder
के निर्माण के प्रभारी होगा:
- यह पहली बार एक नया
ConfigurationBuilder
बनाता है। - यह तब एक आधार पथ निर्धारित करता है जिसका उपयोग आगे की फ़ाइलों के निरपेक्ष पथ की गणना करने के लिए किया जाएगा
- यह कॉन्फ़िगरेशन बिल्डर के लिए एक वैकल्पिक
appsettings.json
जोड़ता है और यह परिवर्तन है की निगरानी - यह एक वैकल्पिक वातावरण संबंधित
appsettings.environementName.json
कॉन्फ़िगरेशन फ़ाइल जोड़ता है - इसके बाद environement वैरिएबल जोड़ता है।
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); }
यदि एक ही सेटिंग कई स्रोतों में सेट की जाती है, तो जोड़ा गया नवीनतम स्रोत जीत जाएगा और इसका मूल्य चुना जाएगा।
अनुक्रमणिका गुण का उपयोग करके तब कॉन्फ़िगरेशन का उपभोग किया जा सकता है। बृहदान्त्र :
चरित्र एक पथ परिसीमाक की सेवा करता है।
Configuration["AzureLogger:ConnectionString"]
यह एक AzureLogger
अनुभाग में एक कॉन्फ़िगरेशन मान ConnectionString
लिए दिखेगा।
पर्यावरण चर के साथ काम करें
आप कॉल करके .AddEnvironmentVariables()
आप पर ConfigurationBuilder
।
यह वातावरण चर उपसर्ग के साथ लोड होगा APPSETTING_
यह तो पेट का उपयोग करेगा :
कुंजी पथ विभाजक के रूप में।
इसका मतलब यह है कि: एनवायरनमेंट सेटिंग्स का पालन करना:
APPSETTING_Security:Authentication:UserName = a_user_name
APPSETTING_Security:Authentication:Password = a_user_password
इस जसन के बराबर होगा:
{
"Security" : {
"Authentication" : {
"UserName" : "a_user_name",
"Password" : "a_user_password"
}
}
}
** ध्यान दें कि Azure सेवा वातावरण चर के रूप में सेटिंग्स संचारित करेगी। पारदर्शी रूप से आपके लिए उपसर्ग निर्धारित किया जाएगा। अज़ुरे में भी ऐसा ही करने के लिए AppSettings ब्लेड में दो एप्लीकेशन सेटिंग्स सेट करें:
Security:Authentication:UserName a_user_name
Security:Authentication:Password a_user_password
विकल्प मॉडल और कॉन्फ़िगरेशन
जब मूल्य के बड़े विन्यास सेटों के साथ काम करते हैं, तो उन्हें एक खरीदने के लिए लोड करना काफी अस्वाभाविक हो सकता है।
विकल्प मॉडल है जो asp.net प्रस्तावों के साथ एक सुविधाजनक तरीका आता है एक मैप करने के लिए section
एक dotnet को poco
: उदाहरण के लिए, एक हाइड्रेट सकता StorageOptions
एक विन्यास खंड से सीधे जोड़ने ख Microsoft.Extensions.Options.ConfigurationExtensions
पैकेज और बुला Configure<TOptions>(IConfiguration config)
विस्तार विधि।
services.Configure<StorageOptions>(Configuration.GetSection("Storage"));
मेमोरी कॉन्फ़िगरेशन स्रोत में
आप एक मेमोरी Dictionary<string,string>
ऑब्जेक्ट जैसे कि एक Dictionary<string,string>
से भी कॉन्फ़िगरेशन का स्रोत कर सकते हैं
.AddInMemoryCollection(new Dictionary<string, string>
{
["akey"] = "a value"
})
यह एकीकरण / इकाई परीक्षण परिदृश्यों में मददगार हो सकता है।