


Detailed tutorial on ASP.NET MVC5 request processing pipeline and life cycle
Request processing pipeline
The request pipeline is a combination of modules used to process HTTP requests. In ASP.NET, the request pipeline has two core components : IHttpModule
and IHttpHandler
. All HTTP requests will enter IHttpHandler
, IHttpHandler
will perform final processing, and IHttpModule
can be done by subscribing to events in the HttpApplication
object. Preprocess the request before IHttpHandler
processes the HTTP request or process IHttpHandler
again after processing the HTTP request.
Before IIS7, such as IIS6 or IIS5, the request processing pipeline was divided into two: IIS request processing pipeline and ASP.NET pipeline. If the client requests static resources, only the IIS pipeline will be processed, and ASP.NET The request will not be processed by the pipeline. Starting from IIS7, the two pipelines are combined into one, called the integrated pipeline.
The above figure mainly describes the processing of HTTP requests by the ASP.NET runtime without going into too many details.
HttpApplication and HttpModule
##After the HTTP request is taken over by the ASP.NET runtime,HttpRuntime<a href="http://www.php.cn/wiki/1268.html" target="_blank"></a> will use
HttpApplicationFactory to create or take out a ## from the
HttpApplication object pool (similar mechanisms in .NET include thread pools and
string detention pools) #HttpApplication object. At the same time, ASP.NET will initialize the registered HttpModule
according to the configuration file. HttpModule
will subscribe to events in HttpApplication during initialization. Implement processing of HTTP requests. In ASP.NET
5, the MvcApplication class is defined in the Global.asax
file, inherited from
HttpApplication Class:
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteTable.Routes.Add("xfhHandler", new Route( "{controller}/{action}", new RouteValueDictionary(new Dictionary<string>() { ["controller"] = "home", ["action"] = "index" }), new XfhUrlRouteHandler()) ); //RouteConfig.RegisterRoutes(RouteTable.Routes); } }</string>
Application_Start()
The method is executed first. Generally, some configuration is added in this method, such asRoute
registration, global filter registration, etc.
RouteAn HTTP request will be processed by at least one
HttpModule. UrlRoutingModule
is a very important module, which is the core of the routing system. The responsibility of the routing system is to obtain the names of the controller and action and other
request data from the request URL. UrlRoutingModule
Matches the current requested URL with the routing template registered in RouteTable
and returns the first route object that matches the current requestRoute
, and then obtain the routing data object RouteData
(in ASP.NET MVC, the routing data must contain the names of controller and action) according to the route object, and then RouteData
obtain IRouteHandler
eventually has IRouteHandler
and gets IHttpHandler
.
HttpHandlerAn HTTP request will eventually enter the HttpHanler for processing. An HTTP request can only be processed by one HttpHandler.
Controller
IHttpHandlerThe current request is processed in the ProcessRequest
method. In the method, IControllerFactory
is obtained through ControllerBuilder
and then the type of Controller
is obtained through reflection.
Action
ControllerBase in ASP.NET MVC is the base class of all 在ASP.NET MVC5中有常用的过滤器有5个: ASP.NET 应用程序的生命周期以浏览器向 Web 服务器发送请求为起点,请求到达服务器后进入处理管道,至浏览器接收服务器响应时为止。 最后附上一张老外绘制的ASP.NET请求管道图,图片来自《ASP.NET MVC Interview Questions and Answers Book》这本书。 Controller
, In the Execute
method of the type, the call to Action
is executed through the InvokeAction
method of IActionInvoker
. Model
binding and model authentication operations will be performed before Action
is executed. Filters
IAuthenticationFilter
、IAuthorizationFilter
、IActionFilter
、IResultFilter
、I<a href="http://www.php.cn/wiki/265.html" target="_blank">Exception</a>Filter
。
在ASP.NET MVC中所有的过滤器最终都会被封装为Filter
对象,该对象中FilterScope
类型的属性Scope
和int
类型属性<a href="http://www.php.cn/wiki/1360.html" target="_blank">Ord</a>er
用于决定过滤器执行的先后顺序,具体规则如下:
Order
和FilterScope
的数值越小,过滤器的执行优先级越高;Order
比FilterScope
具有更高的优先级,在Order
属性值相同时才会被考虑//数值越小,执行优先级越高public enum FilterScope
{
Action= 30,
Controller= 20,
First= 0,
Global= 10,
Last= 100}
ActionResult
Action
执行完毕之后会返回ActionResult
类型对象作为对此次请求进行处理的结果,对于不是ActionResult
类型的返回值,ASP.NET MVC会将其转换为ActionResult
类型。请求生命周期
课程推荐
The above is the detailed content of Detailed tutorial on ASP.NET MVC5 request processing pipeline and life cycle. For more information, please follow other related articles on the PHP Chinese website!

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C# and .NET adapt to the needs of emerging technologies through continuous updates and optimizations. 1) C# 9.0 and .NET5 introduce record type and performance optimization. 2) .NETCore enhances cloud native and containerized support. 3) ASP.NETCore integrates with modern web technologies. 4) ML.NET supports machine learning and artificial intelligence. 5) Asynchronous programming and best practices improve performance.

C#.NETissuitableforenterprise-levelapplicationswithintheMicrosoftecosystemduetoitsstrongtyping,richlibraries,androbustperformance.However,itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical,wherelanguageslikeRustorGomightbepreferable.

The programming process of C# in .NET includes the following steps: 1) writing C# code, 2) compiling into an intermediate language (IL), and 3) executing by the .NET runtime (CLR). The advantages of C# in .NET are its modern syntax, powerful type system and tight integration with the .NET framework, suitable for various development scenarios from desktop applications to web services.

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

Testing strategies for C#.NET applications include unit testing, integration testing, and end-to-end testing. 1. Unit testing ensures that the minimum unit of the code works independently, using the MSTest, NUnit or xUnit framework. 2. Integrated tests verify the functions of multiple units combined, commonly used simulated data and external services. 3. End-to-end testing simulates the user's complete operation process, and Selenium is usually used for automated testing.

Interview with C# senior developer requires mastering core knowledge such as asynchronous programming, LINQ, and internal working principles of .NET frameworks. 1. Asynchronous programming simplifies operations through async and await to improve application responsiveness. 2.LINQ operates data in SQL style and pay attention to performance. 3. The CLR of the NET framework manages memory, and garbage collection needs to be used with caution.

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

Notepad++7.3.1
Easy-to-use and free code editor

Atom editor mac version download
The most popular open source editor

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.