CodeShot
Juniorسختی 2 از ۵· در 82٪ مصاحبه‌های این حوزه پرسیده شده

Middleware در ASP.NET Core چیست و ترتیب آن چه اهمیتی دارد؟

نشان کردن

پاسخ کوتاه

قطعه‌کدی در زنجیره پردازش درخواست HTTP که می‌تواند درخواست را تغییر دهد، به Middleware بعدی بدهد یا زنجیره را قطع کند.

پاسخ کامل

هر درخواست از یک Pipeline عبور می‌کند که از Middlewareهای پشت‌سرهم ساخته شده است. هر Middleware سه انتخاب دارد:

  • کاری روی درخواست انجام دهد و next() را صدا بزند
  • زنجیره را قطع کند (Short-circuit) و مستقیم پاسخ بدهد
  • بعد از بازگشت next() روی پاسخ کار کند

ترتیب ثبت دقیقاً ترتیب اجراست، بنابراین برای مثال UseAuthentication باید قبل از UseAuthorization بیاید — در غیر این صورت هنگام تصمیم‌گیری درباره دسترسی، هویت کاربر هنوز مشخص نشده است.

مثال کد

app.UseExceptionHandler();
app.UseRouting();
app.UseAuthentication(); // اول احراز هویت
app.UseAuthorization();  // بعد صدور مجوز
app.MapControllers();

نکته مهم

تفاوت Use و Run: Run هیچ‌وقت next را صدا نمی‌زند و همیشه انتهای زنجیره است.

اشتباه رایج

❌ قرار دادن UseCors بعد از UseRouting ولی بعد از MapControllers — در این حالت هدرهای CORS اصلاً اضافه نمی‌شوند.

شرکت‌هایی که این سؤال را پرسیده‌اند

اسنپ