با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش asp.net core در خدمت شما دوستان هستیم . در این جلسه به معرفی و کالبدشکافی کد های program.cs در ASP.NET Core 2.x و میزبانی وب در نسخه ASP.NET Core 2.x می پردازیم تا پایان این جلسه با ما همراه باشید .
فایل program.cs در ASP.NET Core 2.x به صورت زیر است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; namespace MyFirstCoreApp { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); } } |
همانطور که در کد های بالا می بینید ، متد Main متد BuildWebHost را برای ساختن میزبان وب با پیکربندی های پیش فرض فراخوانی می کند.
BuildWebHost نیز خود می تواند به عنوان یک متد ارائه شود که از نوع IWebHost بوده و صورت زیر هم میتوان آن را پیاده سازی کرد:
1 2 3 4 5 6 | public static IWebHost BuildWebHost(string[] args) { return WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); } |
WebHost یک کلاس استاتیک است که می تواند برای ایجاد نمونه ای از IWebHost و IWebHostBuilder با پیکربندی پیش فرض استفاده شود.
متد CreateDefaultBuilder یک نمونه از WebHostBuilder با پیکربندی پیش فرض ایجاد می کند.
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 34 35 36 37 38 39 40 41 42 | public static IWebHostBuilder CreateDefaultBuilder(string[] args) { var builder = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .ConfigureAppConfiguration((hostingContext, config) => { var env = hostingContext.HostingEnvironment; config.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) { config.AddUserSecrets(appAssembly, optional: true); } } config.AddEnvironmentVariables(); if (args != null) { config.AddCommandLine(args); } }) .ConfigureLogging((hostingContext, logging) => { logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); logging.AddConsole(); logging.AddDebug(); }) .UseIISIntegration() .UseDefaultServiceProvider((context, options) => { options.ValidateScopes = context.HostingEnvironment.IsDevelopment(); }); return builder; } |
همانطور که در کد های بالا می بینید ، متد CreateDefaultBuilder نمونه ای از WebHostBuilder را ایجاد می کند و Kestrel، محتوای دایرکتوری ریشه ، یکپارچه سازی IIS را همانند روش ASP.NET Core 1.x پیکربندی می کند.
همچنین متد ConfigureAppConfiguration را برای بازگردانی تنظیمات از فایلهای appsettings.json، متغیرهای محیطی (environment variables) و اسرار کاربر (user secrets) ، فراخوانی می شود.
متد ConfigureLogging برای ورود به console و debug window نیز فراخوانی می شود. بنابراین،کد های فایل Program.cs در ASP.NET Core 2.x کار ما را برای راه اندازی یک میزبان وب آسانتر می کند.
در بخش بعدی از این آموزش فایل Startup.cs را مورد بررسی قرار خواهیم داد.