کاربرد فایل Program.cs در Asp.net Core چیست ؟
سلام. فایل Program.cs چه کاربردهایی در Asp.net Core داره ؟ آیا بدون این فایل هم میشه پروژه رو ران کرد ؟
آشنایی با کلاس Program.cs در Asp.net Core
کلاس Program.cs نقطه شروع برنامه می باشد. در این فایل شما می توانید پروژه خودتون رو پیکربندی کنید. برای اجرای پروژه وب شما نیاز به یک وب سرور دارید (IIS یا Kestrel) که در این فایل پیکربندی وب سرور نیز انجام می شود.
هر زمان که شما پروژه Dot net Core خود را اجرا می کنید در ابتدا این فایل اجرا می شود و تنظیمات اولیه پروژه شما را انجام می دهد.
نکته : اگر شما به فایل Program.cs نگاه کنید متوجه خواهید شد که در این کلاس هیچ تابع یا متدی تعریف نشده است و کدهای مربوط به پیکربندی مستقیم و بدون ساختار خاصی تعریف شده است. در این کلاس از یک خاصیت سی شارپ به نام Top Level Statement استفاده شده که امکان تعریف کدها را بدون تابع و متد به شما می دهد.
نمونه ای از کلاس Program.cs به صورت پایه و بدون تغییر :
//Section 1
var builder = WebApplication.CreateBuilder(args);
//Section 2
// Add services to the container.
builder.Services.AddControllersWithViews();
//Section 3
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
//Section 4
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
شی builder : اگر در کدهای بالا نگاه کنید در قسمت section 1 یک متغیر به نام builder از نوع WebApplication.CreateBuilder تعریف شده است. متد CreateBuilder سرور داخلی پروژه که Kestrel می باشد را راه اندازی می کند و یک سری تنظیمات دیگه مانند خواندن از فایل appsetting.json را انجام می دهد. خب پس در اینجا ما یک شی به نام builder داریم که اشاره به سرور داخلی پروژه دارد و از طریق این متغیر می توانیم هر نوع پیکربندی روی سرور انجام دهیم.
بخش Service ها : اگر به Section 2 در کدهای بالا دقت کنید، بخشی وجود دارد که شما می توانید Service های مورد نیاز پروژه خودتون رو در این قسمت به پروژه تزریق کنید. در این مثال سرویس AddControllersWithViews راه اندازی شده است. این سرویس تمامی پیش نیازهایی که برای کار با یک پروژه MVC مورد نیاز است را به پروژه اضافه می کند. در این بخش شما می توانید با توجه به نیاز پروژه خود Service های زیادی به پروژه تزریق کنید.
بخش app یا میان افزارها : در Section 3 یک متغیر به نام app تعریف شده است که از متد Build ارث بری کرده است. این بخش یکی از بخش های مهم کلاس Program.cs می باشد. در این بخش شما می توانید Middleware ها یا همان میان افزارها را تعریف کنید. request هایی که در زمینه های مختلف از طریق pipeline ها به پروژه شما ارسال می شود در این بخش مدیریت می شود.
برای درک بهتر کاربرد این بخش یک مثال برای شما میزنم. فرض کنید یک کاربر وب سایت شما را باز می کند. در این لحظه یک Request از سمت مرورگر کاربر به سرور شما ارسال می شود. این Request برای اینکه بتواند در نهایت یکی از صفحات وب سایت شما را به کاربر نمایش دهد باید مراحل مختلفی را طی کند.
به عنوان مثال ابتدا باید طبق سیستم Routing وب سایت شما مسیر حرکت مشخص شود. خب در اینجا وظیفه مسیریابی به عهده میان افزار app.UseRouting می باشد. در مرحله بعد باید استایل ها و تصاویر آن صفحه نمایش داده شود. از آنجایی که این موارد جزو static ها در سایت هستند میان افزار app.UseStatucFiles این درخواست را مدیریت می کند. همچنین اگر نیاز به احراز هویت باشد میان افزار app.UseAuthorization صدا زده می شود و به همین صورت میان افزارهای مختلف درخواست های مختلف را دریافت و مدیریت می کنند.
بخش تعریف مسیرها : یکی از بخش های مهم که جزیی از همان میان افزارها می باشد بخش تعریف الگوهایی برای مسیریابی در وب سایت می باشد. اگر در بخش Section 4 نگاه کنید متوجه می شوید یک الگو به نام default تعریف شده است که به پروژه می گوید به صورت پیش فرض باید کنترلر Home و ویوی Index نمایش داده شود. شما می توانید الگوهای مختلفی در این بخش تعریف کنید.
تفاوت بین UseEndpoints و UseRouting در مسیریابی در Asp.net Core
تفاوت مسیریابی (Routing) در Asp.net Core 2 با Asp.net Core 3 چیست ؟
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2