در فریم ورک ASP.NET Core MVC به ازای هر Request یک نمونه ی جدید از کنترلر ساخته میشود. از آنجایی که با هر درخواست جدید شی HttpContext تغییر می کند باید نمونه سازی کنترلر هم صورت گیرد.

2018-10-27 at 14-15-02.png

در کلاس مادر Controller دو متد OnActionExecuting و OnActionExecuted وجود دارد که قبل و بعد از اجرای هر اکشن اجرا میشوند.



public class HomeController : Controller
{
public override void OnActionExecuting(ActionExecutingContext context)
{
//Before action
}

public IActionResult Index()
{
//Action
return View();
}


public override void OnActionExecuted(ActionExecutedContext context)
{
//After action
}
}


معمولا از این متدها برای اعمال تغییرات روی HttpContext قبل از اینکه وارد اکشن شود استفاده می کنیم. هر چند که روشها دیگری مانند استفاده از فیلتر ها وجود دارد اما گاهی این تکنیک به کمک ما می آید. مثلا می توانیم از این دو متد برای پر کردن آی دی کاربر یا ثبت لوگ استفاده کنیم.