httpHandlers和httpModules接口介绍 (3)
第三步:在Init事件中注册PreRequestHandlerExecute事件,并实现事件处理方法
| 
 | 
第四步:在Login.aspx页面的“登录”按钮中加入下面代码
| protected void Button1_Click(object sender, EventArgs e)
{
if(true)//判断用户名密码是否正确
{ 
if (Request.QueryString["source"] != null)
{
string s = Request.QueryString["source"].ToLower().ToString();  
 //取出从哪个页面转来的
Session["user"] = txtUID.Text;
Response.Redirect(s); //转到用户想去的页面
}
else
{
Response.Redirect("main.aspx");//默认转向main.aspx
}
} 
} | 
第五步:在Web.Conofig中注册一下这个HttpModule模块
| <httpModules> <add name="TestModule" type ="ClassLibrary831.TestModule,ClassLibrary831"></add> </httpModules> | 
3、多模块的操作
如果定义了多个HttpModule,在web.config文件中引入自定义HttpModule的顺序就决定了多个自定义HttpModule在处理一个HTTP请求的接管顺序。
HttpHandler
HttpHandler是HTTP请求的处理中心,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。
HttpHandler与HttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系。
| IHttpHandler接口声明
public interface IHttpHandler
{
bool IsReusable { get; }
public void ProcessRequest(HttpContext context); 
//请求处理函数
}
示例:把硬盘上的图片以流的方式写在页面上
class TestHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
FileStream fs = new FileStream
(context.Server.MapPath("worm.jpg"), FileMode.Open);
byte[] b = new byte[fs.Length];
fs.Read(b, 0, (int)fs.Length);
fs.Close();
context.Response.OutputStream.Write(b, 0, b.Length);
}
public bool IsReusable
{
get
{
return true;
}
}
} | 
    "唯有高屋建瓴,方可水到渠成"
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号