معرفی
این مقاله مفاهیم Middleware را در ASP.NET Core نشان می دهد. در پایان این مقاله، درک روشنی از نکات زیر خواهید داشت:
- Middleware چیست؟
- چرا سفارش میان افزار مهم است؟
- آشنایی با روش اجرا، استفاده و نقشه.
- چگونه یک میان افزار سفارشی ایجاد کنیم؟
- چگونه مرور دایرکتوری را از طریق Middleware فعال کنیم؟
Middleware چیست؟
Middleware قطعه ای از کد در خط لوله برنامه است که برای رسیدگی به درخواست ها و پاسخ ها استفاده می شود.
برای مثال، ممکن است یک جزء میانافزار برای احراز هویت کاربر، یک میانافزار دیگر برای رسیدگی به خطاها، و میانافزار دیگری برای ارائه فایلهای ثابت مانند فایلهای جاوا اسکریپت، فایلهای CSS، تصاویر و غیره داشته باشیم.
میانافزار را میتوان بهعنوان بخشی از چارچوب .NET Core داخلی، از طریق بستههای NuGet اضافه کرد، یا میتواند میانافزار سفارشی باشد. این اجزای میانافزار به عنوان بخشی از کلاس راهاندازی برنامه در روش پیکربندی پیکربندی میشوند. روشها را پیکربندی کنید تا خط لوله پردازش درخواست را برای یک برنامه ASP.NET Core تنظیم کند. این شامل یک دنباله از نمایندگان(delegates)(delegates) درخواست است که یکی پس از دیگری فراخوانی می شوند.
شکل زیر نحوه پردازش درخواست از طریق اجزای میانافزار را نشان میدهد.
![](http://pezhvak24.ir/dl/codenevis/firstcode/article/overview-of-middleware-in-asp-net-core/Images/1.png)
به طور کلی، هر میان افزار ممکن است درخواست های دریافتی را رسیدگی کند و اجرا را برای پردازش بیشتر به میان افزار بعدی منتقل کند.
اما یک جزء میانافزار میتواند تصمیم بگیرد که قطعه بعدی میانافزار را در خط لوله فراخوانی نکند. به این حالت اتصال کوتاه یا خاتمه خط لوله درخواست می گویند. اتصال کوتاه اغلب مطلوب است زیرا از کار غیر ضروری جلوگیری می کند. به عنوان مثال، اگر درخواست برای یک فایل ثابت مانند یک فایل CSS تصویری فایل جاوا اسکریپت و غیره باشد، این میان افزار فایل های استاتیک می تواند آن درخواست را مدیریت کرده و سرویس دهد و سپس بقیه خط لوله را اتصال کوتاه کند.
بیایید یک برنامه ASP.NET Core Web ایجاد کنیم و پیکربندی پیش فرض میان افزار را در متد Configure کلاس Startup مشاهده کنیم.
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
- {
- if (env.IsDevelopment())
- {
- //This middleware is used reports app runtime errors in development environment.
- app.UseDeveloperExceptionPage();
- }
- else
- {
- //This middleware is catches exceptions thrown in production environment.
- app.UseExceptionHandler("/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(); //adds the Strict-Transport-Security header.
- }
- //This middleware is used to redirects HTTP requests to HTTPS.
- app.UseHttpsRedirection();
- //This middleware is used to returns static files and short-circuits further request processing.
- app.UseStaticFiles();
- //This middleware is used to route requests.
- app.UseRouting();
- //This middleware is used to authorizes a user to access secure resources.
- app.UseAuthorization();
- //This middleware is used to add Razor Pages endpoints to the request pipeline.
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapRazorPages();
- });
- }