ASP.NET MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
来源:互联网 发布:数据挖掘平台 编辑:程序博客网 时间:2024/06/10 10:12
ASP.NET MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
版权声明:本文为博主原创文章,未经博主允许不得转载。
HttpContext
HttpContext是最原始的ASP.NET Context. MVC的目的之一是能够单元测试。HttpContext没有base class,并且不是virtual,所以不能用单元测试,因为没有办法mock.
HttpContextBase
HttpContextBase, 是用来在MVC中替代HttpContext.但是这是一个abstract类,是mockable的。
HttpContextWrapper
HttpContextWrapper是HttpContextBase的实现类,用来真正的替换HttpContext,可以用new HttpContextWrapper(HttpContext.Current)的方式来创建一个ttpContextWrapper.观察代码可以发现,HttpContext与HttpContextWrapper在属性方法设置上基本上是一样的,只是HttpContextWrapper不是virtual,有base class,因此可以进行单元测试。现在,关于使用到HttpContext的方法,可以通过HttpContextWrapper来进行单元测试。观察ASP.NET MVC的源码可以发现,在最终MVCHandler(ASP.NET MVC的HttpHandler)中,调用ProcessRequest(HttpContext context)方法的时候,其内部把HttpContext转为HttpContextWrapper,然后调用了ProcessRequest(HttpContext context)来进行后续的处理。
- public ProcessRequest(HttpContext context)
- {
- HttpContextWrapper _context = new HttpContextWrapper(context);
- ProcessRequest(_context);
- }
- public ProcessRequest(HttpContextBase context)
- {
- //进行相应的Controller,Action的调用
- }
- 顶
- 1
- 踩
- 1
- 上一篇ASP.NET生命周期详解
- 下一篇页面非正常显示Object moved to here问题
- ASP.NET MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
- ASP.NET MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
- Asp.net中的HttpContext
- asp.net类文件中出现上下文中不存在HttpContext
- Asp.Net HttpContext.RemapHandler 用法
- ASP.NET的HttpContext基础知识
- ASP.NET MVC中缓存
- ASP.NET mvc中session
- Asp.net mvc中过滤器
- ASP.NET 使用HttpContext.Current.Cache
- ASP.NET基础之HttpContext学习
- ASP.NET Core开发之HttpContext
- ASP.NET基础之HttpContext学习
- asp.net core 对HttpContext 的扩展
- ASP.NET Core开发之HttpContext
- MVC HttpContextBase 接收外部请求参数
- [Asp.net mvc]Asp.net mvc 中使用LocalStorage
- [Asp.net mvc] 在Asp.net mvc 中使用MiniProfiler
- 学习到栈的时候,利用函数递归调用解决汉诺塔
- 第四周项目3(2)-单链表应用
- gulp的学习资料
- 让你的Tex代码更加美观就这么简单----Tex代码的自动格式化
- Struts2自学入门(七)——Struts国际化
- ASP.NET MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
- JSON-lib库中的 null 问题
- ie6 下png背景透明
- VS2010提升运行速度方法(转)
- Jmeter 分布式配置
- Error: Failed to find 'ANDROID_HOME' environment variable.解决方案
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
- POJ 2976- Dropping tests -01分数规划
- VT系列:将代码移植到多核模式