• ASP.NET底层机制 (下) HttpHandler


    1.IHttpHandler接口
        定义了实现一个HttpRequest的处理所必须实现的一些系统约定方法。

        public interface IHttpHandler
        
    {
            
    //其他Request是否可以使用IHttpHandler
            bool IsReusable get; }

            
    //处理HttpRequest
            void ProcessRequest(HttpContext context);
        }

    NET为ASP.NET提供了很多系统默认HttpHandler类,用来适应不同类型的HttpRequest
        比如aspx,在machine.config中是这样定义的:    
            <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>
                说明遇到aspx的Request,ASP.Net会将其交给System.Web.UI.PageHandlerFactory的HttpHandler类来处理
    如果自己定义了新的HttpHandler,而且在Web.config中指定,则系统只会使用这个新的HttpHandler,而不再使用原先指定的

    2.HttpHandler实现了IHttpHandler接口
        一个aspx页面在HttpHandler容器中的ProcessRequest方法才被系统真正的处理解析——即交给PageHandlerFactory处理,该工厂负责提供一个HttpHandler容器,由其处理HttpRequest

    3.如果要在HttpHandler容器中使用Session,必须要实现IRequiresSessionState接口——这只是一个空接口,一个标记

    using System;
    using System.Web;
    using System.Web.SessionState;

    namespace MyNamespace
    {
        
    public class MyHandler:IHttpHandler,IRequiresSessionState
        
    {
            
    public MyHandler() {}

            
    public bool IsReusable
            
    {
                
    get
                
    {
                    
    return true;
                }

            }


            
    public void ProcessRequest(HttpContext context)
            
    {
                HttpResponse response 
    = context.Response;
                HttpRequest request 
    = context.Request;

                HttpSessionState Session 
    = context.Session;
                Session[
    "test"= "hi";

                response.Write(
    "<b>Hello world!</b>");
                response.Write(Session[
    "test"]);
            }

        }

    }

    同时,还要在Web.config中加上声明:
       <httpHandlers>
            
    <add verb="*" path="*" type="MyNamespace.MyHandler,MyNamespace"></add>
       
    </httpHandlers>

    4.IHttpHandlerFactory
        待续。。。


  • 相关阅读:
    点击空白处隐藏盒子
    java缓存技术
    使用Java处理大文件
    java实现把一个大文件切割成N个固定大小的文件
    笔记:Java的IO性能调整
    NIO之轻松读取大文件
    java读写文件,读超大文件
    java读取大文件 超大文件的几种方法
    java web服务器cpu占用过高的处理
    软件开发各类文档模板
  • 原文地址:https://www.cnblogs.com/Jax/p/912958.html
Copyright © 2020-2023  润新知