管道处理模型一(下称《模型一》)是本篇的基础,不妨先看一下。
一.Httphandler:
在《模型一》的demo中,新建一个webform文件,MyWebForm.aspx,内容和简单,就是一行文字。
<body>
<form id="form1" runat="server">
<div>
This is MyWebForm
</div>
</form>
</body>
运行结果:
再看MyWebForm.aspx.cs文件代码:
public partial class MyWebForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
没有别的代码,只是实现了System.Web.UI.Page,Page又是什么呢?F12跟进去:
所以,在Webform中,我们申明的东西,写的页面,实现的业务逻辑,其实就是一个HttpHandler,而它是在PreRequestHandlerExecute 和 PostRequestHandlerExecute 这两个Event之间执行的。
这里有一个很重要的事件,MapRequestHandler,负责制定具体的handler处理请求:
它是在哪里配置的呢?
全局的webconfig中,(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config)
我们先用反编译工具,看看System.Web.UI.PageHandlerFactory:
这个核心方法 GetHandlerHelper干什么的呢?它就是传入的参数,创建一个Page。
其实从名字就能看的出来,PageHandlerFactory,PageHandler的工厂,当然输出Page。
还有web.config文件不能访问,就是因为已经配置了HttpForbiddenHandler,禁止访问。
强行访问web.config,就报错了
为什么