博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC 小牛之旅4:ASP.NET MVC的运行生命周期
阅读量:7028 次
发布时间:2019-06-28

本文共 1121 字,大约阅读时间需要 3 分钟。

ASP.NET MVC的运行生命周期大致分成三大过程:(1)网址路由对比。 (2)运行Controller与Action。 (3)运行View并回传结果

4.1网址路由对比

当iis收到http请求后,会先通过UrlRoutingModule模块处理所有与网址路由有关的运算。默认情况下,如果该网址可以对应到相对于网站根目录下的实体文档,则不会通过ASP.NET MVC进行处理,会自动略过所有的网址路由对比,而是直接交给IIS或ASP.NET运行。

如果要改变这个UrlRoutingModule的默认对比行为,让所有从客户端浏览器发送到iis的http请求全部要经过UrlRoutingModule模块进行路由规则判断的话,可以在Global.asax的Application_Start()事件最前面将 RouteTable.Routes.RouteExistingFiles = true即可。如图所示:

设置后这样网站的所有收到的http请求都会以在RegisterRoutes定义的网址路由规则进行一一对比,如果对比成功,就会以ASP.NET MVC的行为进行处理,默认交给MvcHandler来运行,如果失败,机会将运行的权力交给IIS负责。

4.2运行Controller与Action

当程序运行到MvcHandler之后,我们知道所有HttpHandler运行的入口点就是ProcessRequest方法,运行该ControllerExecute()方法最后会运行到ExecuteCode()方法时,会通过路由值来决定运行Controller里的哪个Action,如果从Controller类别中找不到Action可以运行时,就会运行HandleUnknownAction

方法,有个继承自ActionResult的型别叫ViewResult,如果该Action回传的型别为ViewResult的话,就会还有下一个小节的流程要执行,并不是运行return View()的时候就结束,否则就会通过实际继承自ActionResult的对象去运行结果并响应至客户端。

4.3运行View并回传结果

如果从Action回传的ActionResult对象为ViewResult的话,ASP.NET MVC会进一步调用实作IViewEngine界面的对象实体的FindView方法,以取得一个实作IView界面的对象实体,然后调用IVew对象实体的Render()方法响应HTML到客户端。

4.4MVC执行步骤概览图示

 

转载于:https://www.cnblogs.com/qinyi173/p/4703523.html

你可能感兴趣的文章
1005. 继续(3n+1)猜想 (25)
查看>>
Python的魔法方法 .
查看>>
iOS 在当前控制器中发送短信
查看>>
1158: 零起点学算法65——进制转换
查看>>
音频 PCM 数据的采集和播放
查看>>
《大话设计模式》读书笔记-第14章 观察者模式
查看>>
WP8.1中C++的winodws运行时组件位移操作的差异
查看>>
keePass
查看>>
MVVM模式下弹出窗体
查看>>
URAL 1018 Binary Apple Tree
查看>>
MYSQL中char 与 varchar 的区别
查看>>
算法设计与分析基础 (Anany Levitin 著)
查看>>
BackBone 源码解读及思考
查看>>
Mybatis四种分页方式
查看>>
查找-二分法查找(折半查找法)
查看>>
svn is already locked解决方案
查看>>
Oracle合并某一列
查看>>
C语言结构体知识
查看>>
centos安装ftp
查看>>
Viewpager+fragment数据更新问题解析
查看>>