В ASP.NET Core жизненный цикл запроса проходит несколько этапов — от получения HTTP-запроса до отправки ответа. В этом процессе участвуют Middleware, контроллеры, фильтры и обработчики событий.
🚩Основные этапы жизненного цикла запроса
Получение запроса (
HttpContext создаётся) Обработка через Middleware (передача запроса вниз)
Маршрутизация (Routing) — определение контроллера
Фильтры (например, аутентификация)
Вызов контроллера и метода (
Action) Обратный проход через Middleware (формирование ответа)
Отправка ответа клиенту
🚩Методы Middleware (Промежуточное ПО)
Middleware — это основной механизм обработки запросов.
Где регистрируются? → В
Program.cs (в app.Use...) Методы Middleware
app.Use(async (context, next) =>
{
Console.WriteLine("Перед обработкой запроса");
await next(); // Передаём запрос дальше
Console.WriteLine("После обработки запроса");
});
🚩Методы в контроллерах (`Controller`)
Контроллер обрабатывает запросы после маршрутизации.
Основные методы
public class HomeController : Controller
{
// Метод вызывается при GET-запросе
public IActionResult Index()
{
return View();
}
// Метод вызывается при POST-запросе
[HttpPost]
public IActionResult SubmitForm(FormModel model)
{
return RedirectToAction("Index");
}
}
🚩Фильтры (`Filters`)
Фильтры выполняются до и после вызова контроллера.
Методы фильтров
public class MyActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
Console.WriteLine("Перед вызовом метода контроллера");
}
public void OnActionExecuted(ActionExecutedContext context)
{
Console.WriteLine("После вызова метода контроллера");
}
}
🚩Методы жизненного цикла в `Program.cs`
В ASP.NET Core 6+ вся конфигурация находится в
Program.cs. Методы инициализации
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews(); // Подключаем MVC
var app = builder.Build();
app.UseRouting(); // Включаем маршрутизацию
app.UseAuthorization(); // Проверка прав
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // Подключаем контроллеры
});
app.Run();
Ставь 👍 и забирай 📚 Базу знаний