یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84 دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84
🎯 ثبت نام
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

آموزش MVC Core-آموزش پیکربندی MVC Core

آموزش MVC Core-آموزش پیکربندی MVC Core

مشکل

چگونه تنظیمات پیکربندی را از منابع مختلف بخوانیم و در برنامه خودمان استفاده کنیم؟

راه حل

یک پروژه خالی ایجاد کنید و فایل های appsettings.json و appsettings.Development.json در پروژه خود اضافه کنید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// appsettings.json 
  "Section1": { 
    "SettingA": "ValueA"
    "SettingB": "ValueB" 
  }, 
  "Section2": { 
    "SettingC": "ValueC" 
  
// appsettings.Development.json 
  "Section1": { 
    "SettingA": "Dev_ValueA" 
  }, 
  "Section2": { 
    "SettingC": "Dev_ValueC" 
  
<button></button>

سپس، تنظیمات پیکربندی را در constructor برای کلاس Startup بخوانید.

1
2
3
4
5
6
7
8
public static IConfiguration Config { get; private set; } 
   
public Startup( 
    IConfiguration config) 
    Config = config; 
}
<button></button>

سپس گزینه های سرویس(option services) را در متد ConfigureServicees() از کلاس Startup اضافه کنید:

1
2
3
4
5
6
7
8
public void ConfigureServices( 
    IServiceCollection services) 
    // setup dependency injection in service container 
    services.AddOptions(); 
    services.Configure(Config); 
}
<button></button>

در نهایت، تنظیمات را به عنوان IOptions interface جایی که T POCO شما است تزریق می کند.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class HelloWorldMiddleware 
    private readonly RequestDelegate next; 
    private readonly AppSettings settings; 
   
    public HelloWorldMiddleware( 
        RequestDelegate next, 
        IOptions options) 
    
        this.next = next; 
        this.settings = options.Value; 
    
   
    public async Task Invoke(HttpContext context) 
    
        var jsonSettings = JsonConvert.SerializeObject(this.settings); 
        await context.Response.WriteAsync(jsonSettings); 
    
<button></button>

مباحثه

ASP.NET Core دارای یک مکانیزم ساده برای خواندن تنظیمات برنامه از منابع مختلف مانند فایل JSON، متغیرهای محیطی(Environment variables)، و یا حتی منابع داده های سفارشی(custom data sources)را دارد. همچنین استفاده از settings، به لطف تزریق وابستگی(Dependency Injection) ساده است.
اگرچه شبیه جادو(تنظیمات شما چگونه لود شده است!!!) ASP.NET Core 2.0 تنظیمات پیکر بندی ای که اضافه شده است را در پشت متد CreateDefaultBuilder() از WebHost ، در Program.cs مخفی می کند. ICconfiguration سپس به container سرویس اضافه می شود و در بقیه برنامه شما در دسترس است.ما این را برای اضافه کردن گزینه ها(options) در Startup استفاده کردیم. برای دیدن این، روش BuildWebHost() را در Program.cs جایگزین کنید و برنامه را اجرا کنید. شما نتیجه مشابهی خواهید گرفت.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static IWebHost BuildWebHost(string[] args) 
    return WebHost.CreateDefaultBuilder(args) 
                   .ConfigureAppConfiguration((context, builder) => 
                   
                       var env = context.HostingEnvironment; 
   
                       builder.AddJsonFile("appsettings.json",  
                                    optional: true, reloadOnChange: true) 
                              .AddJsonFile($"appsettings.{env.EnvironmentName}.json",  
                                    optional: true, reloadOnChange: true); 
   
                       if (env.IsDevelopment()) 
                       
                           var appAssembly = Assembly.Load( 
                               new AssemblyName(env.ApplicationName)); 
                           if (appAssembly != null) 
                           
                               builder.AddUserSecrets(appAssembly, optional: true); 
                           
                       
   
                       builder.AddEnvironmentVariables(); 
   
                       if (args != null) 
                       
                           builder.AddCommandLine(args); 
                       
                   }) 
                   .UseStartup<startup>() 
                   .Build(); 
</startup><button></button>

در راه حل فوق دو منبع فایل JSON ارائه می شوند. نکته مهم این است که این منابع به صورت متوالی خوانده شوند و تنظیمات را از منبع قبلی بازنویسی کنند. شما می توانید این را در راه حل بالا ببینید. خروجی مقدار تنظیم B از فایل تنظیمات اول در حالی که تنظیمات دیگر توسط فایل تنظیمات دوم رونویسی می شود را نشان می دهد.
توجه داشته باشید که یک public static property دارای مثال IConfiguration است تا بتوان آن را در تمام برنامه ها استفاده کرد مانند –

1
var valueA = Config["Section1:SettingA"];<button></button>

با این حال روش بهتری برای خواندن تنظیمات وجود دارد، به عنوان مثال تنظیمات را از یک کلاس POCO تایپ شده بخوانید و و سپس آن را به عنوان وابستگی به middleware، controllers ها و غیره تزریق کنید.در راه حل فوق، من از میان پست های قبلی استفاده کرده ام تا این الگو را نشان دهم.
شما همچنین می توانید کلاس های POCO را برای بخش های مختلف در فایل تنظیمات داشته باشید و با استفاده از روش GetSection () در ICconfiguration آنها را بخوانید.

1
2
services.Configure(Config.GetSection("Section1")); 
<button></button>

همچنین ممکن است تنظیمات در کد را با استفاده از overload of IserviceCollection منتشر کنید. Configureکد lambda را قبول می کند.

1
2
3
4
5
services.Configure(options => 
    options.Section1.SettingA = "SomeValue"
}); 
<button></button>

شما می توانید Source Code این مقاله را از لینک زیر دانلود کنید:

1
https://github.com/TahirNaushad/Fiver.Asp.Configuration<button></button>

شما دانشجویان گرامی می توانید فایل مربوط به این آموزش را از قسمت پایانی این مقاله دانلود نمایید .

1397/03/07 2301 984
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...