Ответ 1
Вот подробные шаги:
- Запрос приходит в ASP.NET
- ASP.NET Routing находит соответствие маршрута, вызывая RouteCollection.GetRouteData
- Это в свою очередь вызывает RouteBase.GetRouteData на каждом маршруте, пока не найдет совпадение
- IRouteHandler для соответствующего маршрута имеет метод GetHttpHandler, который называется
- MvcHandler работает (ProcessRequest называется)
- Фабрика контроллера MVC находит и создает контроллер в CreateController
- ControllerActionInvoker определяет, какое действие нужно запустить в InvokeAction.
- Выполняется этап AuthorizationFilter (в том числе метод авторизации на самом контроллере)
- Этап ActionExecuting выполняется
- Запрошенный метод действия выполнен
- Этап ActionExecuted выполняется
- Если есть объект результата, то выполняется этап ResultExecuting
- Если результат не был отменен, то выполняется метод ActionResult ExecuteResult.
- Этап ResultExecuted выполняется
- Если произошла ошибка, выполняется этап исключения
Я также хотел бы отослать вас к диаграмме змеи MVC, которую я использую во многих презентациях на ASP.NET MVC. Вот полное изображение:
В блоге, на который я ссылаюсь, описываются некоторые концепции, используемые в ASP.NET MVC в отношении того, как данные проходят через приложение.