2017-04-17 13 views
5

मैं अपने एएसपी.नेट कोर एमवीसी प्रोजेक्ट पर कॉन्फ़िगरेशन चर का उपयोग करने की कोशिश कर रहा हूं।एएसपी.नेट कोर एमवीसी ऐप सेटिंग्स

यह वह जगह है जहां मैं अब तक मिल गया है:

  1. एक appsettings.json
  2. बनाया गया एक AppSettings वर्ग
  3. अब मैं ConfigureServices पर इसकी सुई कोशिश कर रहा हूँ बनाया गया, लेकिन मेरी विन्यास वर्ग या तो मान्यता प्राप्त नहीं है या जब पूर्ण संदर्भ का उपयोग करते हुए: "Microsoft.Extensions.Configuration" GetSection विधि मान्यता प्राप्त नहीं है, यानी

Configuration class not being recognized

GetSection method not being recognized

कि यह कैसे उपयोग करने पर कोई भी विचार?

+0

कृपया ध्यान दें, वहाँ कोई MVC6 केवल है, MVC1- 5। इसे अब एएसपी.नेट कोर 1.x कहा जाता है, इसे स्पष्ट करने के लिए संस्करण 1 के साथ शुरू होता है ** यह एमवीसी 5 का उत्तराधिकारी नहीं है लेकिन एक पूर्ण पुनर्लेख है जो ** एमवीसी 5 ** और एएसपी के पिछले संस्करणों के साथ संगत नहीं है। नेट एमवीसी – Tseng

उत्तर

7

.NET कोर में संपूर्ण कॉन्फ़िगरेशन दृष्टिकोण वास्तव में लचीला है, लेकिन शुरुआत में बिल्कुल स्पष्ट नहीं है।

{ 
    "option1": "value1_from_json", 

    "ConnectionStrings": { 
    "DefaultConnection": "Server=,\\SQL2016DEV;Database=DBName;Trusted_Connection=True" 
    }, 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Warning" 
    } 
    } 
} 

appsettings.json फ़ाइल आप पहली बार सेट करने की आवश्यकता से डेटा प्राप्त करने के लिए:

एक appsettings.json फ़ाइल है कि इस तरह दिखता है मान लिया जाये कि: यह शायद एक उदाहरण के साथ व्याख्या करने के लिए सबसे आसान है Startup.cs में एक ConfigurationBuilder इस प्रकार है:

public Startup(IHostingEnvironment env) 
{ 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); 

    if (env.IsDevelopment()) 
    { 
     // For more details on using the user secret store see https://go.microsoft.com/fwlink/?LinkID=532709 
     builder.AddUserSecrets<Startup>(); 
    } 

    builder.AddEnvironmentVariables(); 
    Configuration = builder.Build(); 

इसके बाद आप सीधे विन्यास का उपयोग कर सकते हैं, लेकिन यह हो करने के लिए विकल्प कक्षाएं बनाने के लिए neater है एलडी वह डेटा, जिसे आप अपने नियंत्रक या अन्य वर्गों में इंजेक्शन दे सकते हैं। उनमें से प्रत्येक विकल्प वर्ग appsettings.json फ़ाइल के एक अलग खंड का प्रतिनिधित्व करता है।

इस कोड में कनेक्शन स्ट्रिंग को ConnectionStringSettings कक्षा में लोड किया गया है और दूसरा विकल्प MyOptions क्लास में लोड किया गया है। .GetSection विधि appsettings.json फ़ाइल का एक विशेष भाग प्राप्त करता है। फिर, यह Startup.cs में है:

public void ConfigureServices(IServiceCollection services) 
{ 
    ... other code 

    // Register the IConfiguration instance which MyOptions binds against. 
    services.AddOptions(); 

    // Load the data from the 'root' of the json file 
    services.Configure<MyOptions>(Configuration); 

    // load the data from the 'ConnectionStrings' section of the json file 
    var connStringSettings = Configuration.GetSection("ConnectionStrings"); 
    services.Configure<ConnectionStringSettings>(connStringSettings); 

ये वे वर्ग हैं जिन्हें सेटिंग डेटा लोड किया गया है। ध्यान दें कि कैसे संपत्ति के नाम json फ़ाइल में सेटिंग्स के साथ जोड़ी अप:

public class MyOptions 
{ 
    public string Option1 { get; set; } 
} 

public class ConnectionStringSettings 
{ 
    public string DefaultConnection { get; set; } 
} 

अंत में, आप तो वे रूपरेखाएँ नियंत्रक में एक OptionsAccessor इंजेक्शन लगाने के द्वारा इस प्रकार का उपयोग कर सकते हैं:

private readonly MyOptions _myOptions; 

public HomeController(IOptions<MyOptions > optionsAccessor) 
{ 
    _myOptions = optionsAccessor.Value; 
    var valueOfOpt1 = _myOptions.Option1; 
} 

आम तौर पर, कोर में पूरी कॉन्फ़िगरेशन सेटिंग्स प्रक्रिया बहुत अलग है। थॉमस अर्डाल की यहां उनकी साइट पर एक अच्छी व्याख्या है: http://thomasardal.com/appsettings-in-asp-net-core/

Configuration in ASP.NET Core in the Microsoft documentation का एक और विस्तृत विवरण भी है।

1

टॉमरेडॉक्स का जवाब बहुत उपयोगी था - धन्यवाद। इसके अलावा, मैंने इसे काम करने के लिए निम्न संस्करणों में निम्नलिखित संदर्भों को बदल दिया है।

"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.2", "Microsoft.Extensions.Configuration.Json": "1.1.1"

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