zoukankan      html  css  js  c++  java
  • IHttpHandlerFactory 接口

    定义类工厂为创建新的IHttpHandler对象而必须实现的协定。

    命名空间:System.Web

    程序集:System.Web.dll

    语法:public interface IHttpHandlerFactory

    方法:

    GetHandler    返回实现IHttpHandler接口的类的实例

    ReleaseHandler  使工厂可以重用现有的处理程序实例

    IHttpHandlerFactory.GetHandler方法

    返回实现IHttpHandler接口的类的实例。

    语法:

    IHttpHandler GetHandler(HttpContext context,string requestType,string url,string pathTranslated)

    参数:

    context     HttpContext类的实例,它提供对用于为Http请求提供服务的内部服务对象(如Requst、Response、Session和Server)的引用 

    requestType   客户端使用的Http数据传输方法(GET或POST)

    url        所请求的资源的RawUrl

    pathTranslated  所请求资源的PhysicalApplicationPath

    IHttpHandlerFactory.ReleaseHandler方法

    语法:

    void ReleaseHandler(IHttpHandler handler)

    参数:

    handler      要重用的IHttpHandler对象

    // Name this C# file HandlerFactoryTest.cs and compile it with the
    // command line: csc /t:Library /r:System.Web.dll HandlerFactoryTest.cs.
    // Copy HandlerFactoryTest.dll to your \bin directory.

    namespace test
    {
       using System;
       using System.Web;

       // Factory class that creates a handler object based on a request 
       
    // for either abc.aspx or xyz.aspx as specified in the Web.config file.
       public class MyFactory : IHttpHandlerFactory
       {
          [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
          public virtual IHttpHandler GetHandler(HttpContext context, 
                                                 String requestType, 
                                                 String url, 
                                                 String pathTranslated)
          {
             String fname = url.Substring(url.LastIndexOf('/')+1);
             String cname = fname.Substring(0, fname.IndexOf('.'));
             String className = "test." + cname;

             Object h = null;

             // Try to create the handler object.
             try 
             {
                // Create the handler by calling class abc or class xyz.
                h = Activator.CreateInstance(Type.GetType(className));
             }
             catch(Exception e)
             {
                throw new HttpException("Factory couldn't create instance " +
                                        "of type " + className, e);
             }
             return (IHttpHandler)h;
          }

          // This is a must override method.
          public virtual void ReleaseHandler(IHttpHandler handler)
          {
          }
       }

       // Class definition for abc.aspx handler.
       public class abc : IHttpHandler
       {
          public virtual void ProcessRequest(HttpContext context)
          {
             context.Response.Write("<html><body>");
             context.Response.Write("<p>ABC Handler</p>\n");
             context.Response.Write("</body></html>");
          }

          public virtual bool IsReusable
          {
             get { return true; }
          }
       }

       // Class definition for xyz.aspx handler.
       public class xyz : IHttpHandler
       {
          public virtual void ProcessRequest(HttpContext context)
          {
             context.Response.Write("<html><body>");
             context.Response.Write("<p>XYZ Handler</p>\n");
             context.Response.Write("</body></html>");
          }

          public virtual bool IsReusable
          {
             get { return true; }
          }
       }
    }

    /*
    ______________________________________________________________

    To use the handler factory, use the following lines in a 
    Web.config file.

    <configuration>
       <system.web>
          <httpHandlers>
             <add verb="*" path="abc.aspx" type="test.MyFactory,HandlerFactoryTest" />
             <add verb="*" path="xyz.aspx" type="test.MyFactory,HandlerFactoryTest" />
          </httpHandlers>     
       </system.web>
    </configuration>
    */
  • 相关阅读:
    Windows通过DOS命令进入MySQL的方法
    php使用phpqrcode生成二维码
    js字符串转换为Json对象的三种写法
    Linux系统中RPM软件包安装语法
    Linux系统中软件安装方式以及特点
    vue-生存周期
    echart力导向图
    css样式,高斯模糊
    某布局
    跨浏览器兼容
  • 原文地址:https://www.cnblogs.com/AngelLee2009/p/2228298.html
Copyright © 2011-2022 走看看