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 ...
随机推荐
- 为powerpc交叉编译nginx
HOST: MINT NGINX VERSION: nginx-1.8.0(nginx-1.8.0.tar.gz) ZLIB VERSION: zlib-1.2.8 PCRE VERSION: pcr ...
- (OpenGL ES 2.0 Shading Language) attribute 、uniform 和 varying
一:attribute .uniform 和 varying 都是glsl的变量的内存指示器(storage qualifiers),指明变量的内存特性 二:attribute attribute 是 ...
- Oracle RAC集群体系结构
一. Oracle集群体系结构 Oracle RAC,全称是Oracle Real Application Cluster,即真正的应用集群,是oracle提供的一个并行集群系统,整个集群系统由Ora ...
- JS循环 for while 全局/局部变量 短路
循环语句: For for循环的格式 for(var i = 0; i < 10; i ++){ } for循环的执行顺序: ① ② 若判断为 true 进④ 进③ 进②判断 ……循环 ...
- PC比价软件
方法:从百度中搜索比较软件排行,并且根据将搜索时间缩小在一年内.统计前面一页结果网站中的比价软件. 名称 备注 统计 淘淘搜购物助手 淘宝购物比价神器 1 省省比价软件 主流网购商城进行横向比较的智能 ...
- C#网络编程—HTTP应用编程(转)
https://www.cnblogs.com/huangxincheng/archive/2012/01/09/2316745.html https://www.cnblogs.com/wangqi ...
- 预测一下web前端未来的6个趋势
2018年前端技术的发展也将进入到一个相对稳定的阶段, 就前端主流技术框架的发展而言,过去的几年里发展极快,在填补原有技术框架空白和不足的同时也渐渐趋于成熟. 未来前端在已经趋向成熟的技术方向上面将会 ...
- IPv6第二层寻址,IPv6接口要求
1. IPv6第二层寻址 IPV6地址以两种方式与第2层地址相关.第一种方式是IPV6独有的,提供了从第2层地址构建接口ID的机制.第二种方式对IPv4和IPV6都是一样的,提供了将一个IP组播地址映 ...
- POJ3764 The xor-longest Path(字典树)
题意 给你一棵树,n个节点,n-1条边每条边i都有一个权值wi.定义任意两点间的权值为:这两点间的路径上的所有边的值的异或.比如a点和b点间有i,j,k三条边,那么ab两点间的权值为:wi^wj^wk ...
- vue源码之响应式数据
分析vue是如何实现数据响应的. 前记 现在回顾一下看数据响应的原因. 之前看了vuex和vue-i18n的源码, 他们都有自己内部的vm, 也就是vue实例. 使用的都是vue的响应式数据特性及$w ...