zoukankan      html  css  js  c++  java
  • 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
        待续。。。


  • 相关阅读:
    Visual Studio 2010单元测试(2)--运行测试并查看代码覆盖率
    实用设计模式之观察者模式
    并查集简单题pku1611
    HDU 4534 郑厂长系列故事——新闻净化(AC自动机+DP)
    求 小于 n 的 质数 几种方式
    MySQL数据库高并发优化配置
    MySQL 对于千万级的大表要怎么优化?
    mysql数据库优化总结
    php 正则表达式怎么匹配标签里面的style?
    MySql数据库优化可以从哪几个方面进行?
  • 原文地址:https://www.cnblogs.com/Jax/p/912958.html
Copyright © 2011-2022 走看看