度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 314|回复: 5

[分享] ASPNET_ISAPI

[复制链接]

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
发表于 2018-2-28 17:38:33 | 显示全部楼层 |阅读模式
请求过来,根据ip和端口,由iis服务器进行接收,如果是静态文件则直接返回文件内容,如果无法解析,则根据映射规则找到对应请求后缀
的ASPNET_ISAPI.dll处理程序集,交由其进行处理。
1.此时会生成IsapRuntime,其创建了WorkRequest对象,
2.接下来实例化HttpRunTime,由其生成HttpContext上下文对象,此时就初始化了Request,Response,Session,Application,等内置对象,
3.然后创建了HttpApplicationFactory工厂对象,其在第一次访问时调用了Global文件中的Application_Start方法,
生成HttpApplication对象,读取系统的配置文件,其中就包括我们的路由配置和约束,并创建HttpModel对象,调用Init方法,并注册这些方法到管道中,
4.由HttpApplication对象调用ProcessRequest,里面负责执行了管道时间
4.1 第一个是事件 就是BeginRequest方法,然后重点来到第7个时间,创建MVCHandler对象 ,
4.1.1将HttpContext存入其中,并读取路由表中的路由规则生成RouteData对象,和HttpContext一并存入从而创建RequestContext,再RequestContext对象传入RoudlerHandler.GetHttpHandler从而获取MVCHandler,并调用context.RemapHandler将mvchandler存入httpcontext中
4.2第8个事件则检查HttpContext中RemapHandler是否为空,如果不为空则跳过此事件,这也是和aspx最重要的不同之一,在aspx中这里是要打造页面控件树的. 而.net mvc这里是略过的
4.3来到第11至第12个事件之间会根据控制器名获取控制器工厂来创建对应的控制器对象,传入RequestContext调用控制器父类的ControllerBase的Execute方法,里面就将RequestContext设置给ControllerContext,执行ExecuteCore方法, 其中就根据请求的方法名找到并调用对应的Action方法,也就是我们写的业务,最后返回View,调用的是ActionResult.Execute 方法,,也就是父类的ViewResultBase.ExecuteResult,找到对应的视图引擎, 获取ViewEngineResult的View对象,获取Response的TextWriter对象和ViewContext对象 来调用引擎的Render方法,生成html代码并writer出去.

回复

使用道具 举报

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
 楼主| 发表于 2018-2-28 17:39:17 | 显示全部楼层
回复

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
发表于 2018-3-2 17:48:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
发表于 2018-3-2 17:48:48 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
发表于 2018-3-3 17:47:12 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
发表于 2018-3-3 17:47:52 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-12-11 02:20 , Processed in 0.315512 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表