While programming with Asp.net MVC, you should be aware of the life of an Asp.net MVC request from birth to death. In this article, I am going to expose the Asp.net MVC Request Life cycle. There are seven main steps that happen when you make a request to an Asp.net MVC web applications.
Routing
- Asp.net Routing is the first step in MVC request cycle. Basically it is a pattern matching system that matches the request’s URL against the registered URL patterns in the Route Table. When a matching pattern found in the Route Table, the Routing engine forwards the request to the corresponding IRouteHandler for that request. The default one calls the
MvcHandler. The routing engine returns a 404 HTTP status code against that request if the patterns is not found in the Route Table.When application starts at first time, it registers one or more patterns to the Route Table to tell the routing system what to do with any requests that match these patterns. An application has only one Route Table and this is setup in the Global.asax file of the application.
- public static void RegisterRoutes(RouteCollection routes)
- {
- routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
- routes.MapRoute( "Default", // Route name
- "{controller}/{action}/{id}", // URL with parameters
- new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
- );
- }
MvcHandler
The MvcHandler is responsible for initiating the real processing inside ASP.NET MVC. MVC handler implements IHttpHandler interface and further process the request by usingProcessRequestmethod as shown below:- protected internal virtual void ProcessRequest(HttpContextBase httpContext)
- {
- SecurityUtil.ProcessInApplicationTrust(delegate {
- IController controller;
- IControllerFactory factory;
- this.ProcessRequestInit(httpContext, out controller, out factory);
- try
- {
- controller.Execute(this.RequestContext);
- }
- finally
- {
- factory.ReleaseController(controller);
- }
- });
- }
Controller
Application_Startevent, as shown below:- protected void Application_Start()
- {
- AreaRegistration.RegisterAllAreas();
- RegisterRoutes(RouteTable.Routes);
- ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory());
- }
Action Execution
Once the controller has been instantiated, Controller's ActionInvoker determines which specific action to invoke on the controller. Action to be execute is chosen based on attributesActionNameSelectorAttribute(by default method which have the same name as the action is chosen) andActionMethodSelectorAttribute(If more than one method found, the correct one is chosen with the help of this attribute).View Result
View Engine
IViewEngineinterface of the view engine. By default Asp.Net MVC usesWebFormandRazorview engines. You can also register your own custom view engine to your Asp.Net MVC application as shown below:- protected void Application_Start()
- {
- //Remove All View Engine including Webform and Razor
- ViewEngines.Engines.Clear();
- //Register Your Custom View Engine
- ViewEngines.Engines.Add(new CustomViewEngine());
- //Other code is removed for clarity
- }
View
No comments:
Post a Comment