千家信息网

ASP.NET MVC5请求处理管道和生命周期的示例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要为大家展示了"ASP.NET MVC5请求处理管道和生命周期的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ASP.NET MVC5请
千家信息网最后更新 2026年10月31日ASP.NET MVC5请求处理管道和生命周期的示例分析

这篇文章主要为大家展示了"ASP.NET MVC5请求处理管道和生命周期的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ASP.NET MVC5请求处理管道和生命周期的示例分析"这篇文章吧。

请求处理管道

请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler。所有的HTTP请求都会进入IHttpHandler,有IHttpHandler进行最终的处理,而IHttpModule通过订阅HttpApplication对象中的事件,可以在IHttpHandler对HTTP请求进行处理之前对请求进行预处理或IHttpHandler对HTTP请求处理之后进行再次处理。

在IIS7之前,如IIS6或IIS5,请求处理管道分为两个:IIS请求处理管道和ASP.NET管道,若客户端请求静态资源则只有IIS管道进行处理,而ASP.NET管道不会处理该请求。从IIS7开始两个管道合二为一,称为集成管道。


上图中主要描述ASP.NET运行时对HTTP请求的处理且不涉及太多细节。

HttpApplication与HttpModule

HTTP请求由ASP.NET运行时接管之后,HttpRuntime会利用HttpApplicationFactory创建或从HttpApplication对象池(.NET中类似的机制有线程池和字符串拘留池)中取出一个HttpApplication对象,同时ASP.NET会根据配置文件来初始化注册的HttpModule,HttpModule在初始化时会订阅HttpApplication中的事件来实现对HTTP请求的处理。

在ASP.NET MVC5中,Global.asax文件中定义了MvcApplication类,继承自HttpApplication类:

public class MvcApplication : System.Web.HttpApplication{    protected void Application_Start()    {        AreaRegistration.RegisterAllAreas();        RouteTable.Routes.Add("xfhHandler", new Route(           "{controller}/{action}",            new RouteValueDictionary(new Dictionary() { ["controller"] = "home", ["action"] = "index" }),            new XfhUrlRouteHandler())        );        //RouteConfig.RegisterRoutes(RouteTable.Routes);    }}

Application_Start()方法最先执行,一般在该方法中添加一些配置,如路由注册、全局过滤器的注册等。

Route

一个HTTP请求会经过至少一个HttpModule的处理。UrlRoutingModule是非常重要的模块,它是路由系统的核心。路由系统的职责是从请求URL中获取controller和action的名称以及其它请求数据。
UrlRoutingModule根据当前请求的URL和RouteTable中已注册的路由模板进行匹配并返回第一个和当前请求相匹配的路有对象Route,然后根据路有对象获取路由数据对象RouteData(ASP.NET MVC中,路由数据必须包含controller和action的名称),再有RouteData获取IRouteHandler最终有IRouteHandler得到IHttpHandler。

HttpHandler

一个HTTP请求最终要进入HttpHanler中进行处理,一次HTTP请求只能被一个HttpHandler进行处理。

Controller

IHttpHandler在ProcessRequest方法中对当前请求进行处理,在该方法中通过ControllerBuilder得到IControllerFactory然后通过反射的方式获取Controller的类型。

Action

ASP.NET MVC中ControllerBase是所有Controller的基类,在类型的Execute方法中通过IActionInvoker的InvokeAction方法来执行对Action的调用。在Action执行前会进行模型绑定和模型认证操作。

Filters

在ASP.NET MVC5中有常用的过滤器有5个:IAuthenticationFilter、IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilter。
在ASP.NET MVC中所有的过滤器最终都会被封装为Filter对象,该对象中FilterScope类型的属性Scope和int类型属性Order用于决定过滤器执行的先后顺序,具体规则如下:

  • 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类型。

请求生命周期

ASP.NET 应用程序的生命周期以浏览器向 Web 服务器发送请求为起点,请求到达服务器后进入处理管道,至浏览器接收服务器响应时为止。

最后附上一张老外绘制的ASP.NET请求管道图,图片来自《ASP.NET MVC Interview Questions and Answers Book》这本书。


以上是"ASP.NET MVC5请求处理管道和生命周期的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

处理 管道 对象 类型 方法 路由 周期 生命 过滤器 示例 分析 两个 优先级 内容 属性 数据 服务器 篇文章 服务 事件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会 新浪科技互联网 互联网科技公司有哪些 互联网 科技服务平台 成都互联网科技公司100强 天津腾达互联网科技有限公司 互联网行业科技股 朱啸虎曾投资哪些互联网科技企业 恒生互联网科技业指数调整周期 上海钢联属于互联网科技股吗 信承诺互联网科技有限公司 萌小萌互联网科技河南有限公司 唯美互联网科技 数字互联网科技有限公司 山东蛋芒互联网科技有限公司 广东猫王互联网科技有限公司电话 网互联网络科技 科技美学互联网 艺术 互联网科技企业文化 前海云享互联网科技 华服互联网科技怎么样 互联网科技的发展 互联网科技的未来发展 老年人脱离互联网科技的作文 创业天下互联网科技有限公司 移动互联网年度科技创新 互联网行业科技股 互联网科技如何创业 无锡工业互联网科技有限公司 新氧科技和美国互联网有关系吗
0