IHttpHandler的学习(1)
IHttpHandler的那些事
今晚看了一晚上的IHttpHAndler的知识,
在自定义了Httphandler后,在配置webconfig里配置也是个技术活,什么集成模式,什么asp管道什么的;
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- 有关如何配置 ASP.NET 应用程序的详细信息,请访问
- http://go.microsoft.com/fwlink/?LinkId=169433
- -->
- <configuration>
- <system.web>
- <compilation debug="true" targetFramework="4.5" />
- <httpRuntime targetFramework="4.5" />
- <!--下面的这一种光错-->
- <!--<httpHandlers>
- <add name="MyFirstHandler" verb="*" path="*" type="IHttpHandlerDemo.MyFirstHandler, IHttpHandlerDemo"/>
- </httpHandlers>-->
- </system.web>
- <!--下面的这一种就ojbk了-->
- <system.webServer>
- <!--<modules>
- <add name="MyFirstHandler" type="IHttpHandlerDemo.MyFirstHandler" />
- </modules>-->
- <handlers>
- <add name="MyFirstHandler" path="*" verb="*" type="IHttpHandlerDemo.MyFirstHandler" preCondition="integratedMode" />
- </handlers>
- </system.webServer>
- </configuration>
- public partial class TestPage : System.Web.UI.Page
- {
- //Page类也是继承至IHttpHandler,所以也就是先执行的Httphandler的注册事件
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- //然后你会发现这个时候请求会进到ProcessRequest()方法,而不会进到Page_Load()里面了,至于原因,这和Page类里面的封装有关系。要说明的是所有实现了IHttpHandler接口的类型都可以在ProcessRequest()方法里面处理当前http请求;即使你在PageLoad里写东西,也不会在里面执行了;
- 因为重写了ProcessRequest这个方法
- public void ProcessRequest(HttpContext context)
- {
- context.Response.Write("你好");
- }
- }
Page_Load和ProcessRequest
而且,在自定义了Httphandler后,程序会先运行Httphandler里的程序;所以这样就会可以先加载二维码或者是否登录的情况(看了好多的博文,这2提到的最多)
ASP.NET:使用HttpModule(给页面添加页头和页尾,重写URL)
一点一点学ASP.NET之基础概念——HttpHandler
IHttpModule实现URL重写
- public class TestMyHandler:IHttpHandler
- {
- public bool IsReusable
- {
- get { return false; }
- }
- public void ProcessRequest(HttpContext context)
- {
- context.Response.Write("从asex页面进来");
- //throw new NotImplementedException();
- }
- }
IHttpHandler包括的方法
- namespace MyTestMVC
- {
- public class TestMyModule:IHttpModule
- {
- public void Dispose()
- {
- //throw new NotImplementedException();
- }
- public void Init(HttpApplication app)
- {
- //事件注册
- app.BeginRequest += app_BeginRequest;
- app.EndRequest += app_EndRequest;
- }
- void app_EndRequest(object sender, EventArgs e)
- {
- var app = (HttpApplication)sender;
- app.Context.Response.Write("请求结束");
- }
- void app_BeginRequest(object sender, EventArgs e)
- {
- var app = (HttpApplication)sender;
- app.Context.Response.Write("请求开始");
- }
- }
- }
IHttpModule包含的方法
在Init方法里面,通过HttpApplication对象来注册请求的事件。这样,每次发起一次http请求的时候都进到这两个方法。
当然,这些注册就能执行了吗?想得美,系统哪里知道你这个自定义HttpModule的存在,所以必须要在Web.config里面声明一下。
仅仅是注册了是不能够行的呀,还必须得留有“备案”才能行呀;不能你买个域名就让你发布网站呀,得备案;
在webconfig里备案,我称它为程序中的备案局。
- <system.webServer>
- <modules>
- <add name="TestMyModule" type="MyTestMVC.TestMyModule, MyTestMVC" preCondition="integratedMode" />
- </modules>
- </system.webServer>
IHttpHandler的学习(1)的更多相关文章
- IHttpHandler的学习(0-2)
这个IHttpHandler,要想到asp.net生命周期 ,想到哪个从你发起请求开始,这个请求通过HttpModule------>IHttpHandler的: 执行HttpModule的一系 ...
- IHttpHandler的学习(0)
本片文章转自网络 问题1:什么是HttpHandler?(Handler:处理者:那就是对Http请求的处理拉) 问题2:什么是HttpModule? 问题3:什么时候应该使用HttpHandler什 ...
- CSS3学习总结——实现瀑布流布局与无限加载图片相册
首先给大家看一下瀑布流布局与无限加载图片相册效果图: 一.pic1.html页面代码如下: <!DOCTYPE html> <html> <head> <me ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...
- ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘
开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...
- 学习“迷你ASP.NET MVC框架”后的小结
看蒋老师MVC的书第二个大收获可以是算是看了这个迷你ASP.NET MVC框架了,虽然它远不如真正ASP.NET MVC(下文简称“MVC”)那么复杂庞大,但在迷你版中绕来绕去也够呛的.这部分我看了几 ...
- 学习资源asp.net
http://www.runoob.com ajax 同一表单,多部分提交.增加,修改,删除 服务器端控件: http://technet.microsoft.com/zh-cn/library/cc ...
随机推荐
- 使用Xcode-debug模式和release模式
在开发过程中,我们常常须要用到NSLog输出一些信息,甚至有的开发过程.必须在控制台查看输出,有经验的程序猿通过控制台输出就能知道整个数据交互的一个流程. 可是一个公布的程序,里面带有太多的NSLog ...
- m_Orchestrate learning system---九、在无法保证是否有图片的情况下,如何保证页面格式
m_Orchestrate learning system---九.在无法保证是否有图片的情况下,如何保证页面格式 一.总结 一句话总结:都配上默认缩略图就可以解决了 1.如何获取页面get方式传过来 ...
- 在CentOS下安装tomcat并配置环境变量(改默认端口8080为8081)
不多说,直接上干货! 第一步:下载tomcat压缩包 http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.73/bin/ 第二步:上传tomcat压 ...
- js 拼接字符串,table等
var userTableStr=''; userTableStr +='<table width="750" height="33" border=&q ...
- Caffe 激励层(Activation)分析
Caffe_Activation 一般来说,激励层的输入输出尺寸一致,为非线性函数,完成非线性映射,从而能够拟合更为复杂的函数表达式激励层都派生于NeuronLayer: class XXXlayer ...
- swift语言点评二十-扩展
结论:扩展无法修改原来的数据结构. Extensions can add new functionality to a type, but they cannot override existing ...
- schema文件及XML文件的DOM和Sax解析
schema文件 <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="htt ...
- HDU-3746 Cyclic Nacklace 字符串匹配 KMP算法 求最小循环节
题目链接:https://cn.vjudge.net/problem/HDU-3746 题意 给一串珠子,我们可以在珠子的最右端或最左端加一些珠子 问做一条包含循环珠子的项链,最少还需要多少珠子 思路 ...
- PHP JWT初识
一直没有好好看过jwt,直到前两天要做web验证,朋友给我推荐了jwt.才发现jwt已经被大家广泛的应用了.看来我有点out了.哈哈,趁着这个世界来好好看看这个. JWT(JSON Web Token ...
- 紫书 习题 11-15 UVa 1668 (图论构造法)
参考了http://www.bubuko.com/infodetail-1276416.html 首先是逆向思维, 向把每条边看作一条路径, 然后再去合并 然后我们讨论怎么样合并时最优的 我们讨论当前 ...