ICANN认证国际域名顶级注册机构
网站建设,域名注册,空间租用,软件销售,广告设计 域名注册,空间租用, 网站建设,东莞网页设计,域名注册,网站推广,网站开发,网页设计 网站推广,,百度推广,新浪推广,雅虎推广,网易推广 标志设计,画册设计,包装设计,VI策划,企业形象顾问 连邦软件加盟店,提供销遥行,管家婆,速达,用友ERP,诺顿等软件报价及销售 建站必读 腾达网络,上网帮助中心, 腾达为东莞等地,提供网站建设,网站推广,广告设计,软件销售等优质服务!
建站必读


 
 
当前位置:首页 -> 建站必读 -> .NET技术
用winform的方式操纵webform--浅谈IHttpHandler
好久以前看过一篇有关自定义IHttpHandler的文章,当时就想写点自己的体会,一直没空。今天就说说这个吧。首先谈谈asp.net的一些参数传递和页面定向的方式

第一,asp.net是用Page.Navigate()调用新页面的URL。Page.Navigate()向浏览器返回了一个http状态码302,使得浏览器向server请求那个新的URL。这种导航方法导致每次客户请求都需两次在client和server之间往返。第二,任何要传递到新页面的信息都需作为URL的参数或存储在Session中或存储在数据库中以便新页面得到这些信息。传统的asp开发人员很习惯这种做法,但其他的web编程人员则有一些更高级的方法。但是很明显的这两个页面是有依赖性的,而依赖性是编译器捕捉不到的也是不容易在设计阶段建模的。所以在debug时,参数是否被正确的传递就只有我们自己检查了。再有传统的数据传递方式有可能会暴露一些关键的数据。更为关键的是这使得面向对象的设计变得很复杂。当然我并没有否定传统的方式,我这是在强调asp.net缺乏对服务器端的多页面之间的通信的支持。

但是我们可以自定义httphandler来扩充这种支持。

开始之前,我们先来看一下asp.net怎样处理页面请求,asp.net是通过System.Web.UI.PageHandlerFactory类的实例来处理。PageHandlerFactory依赖于另一个类PageParser。一个页面在第一次请求时PageParser把它编译成一个真正的.Net的类并cache已编译的实例

HttpApplication

    |

    |1.GetHandler()

    |

PageHandlerFactory

    |

    |2.GetCompiledPageInstance()

    |

PageParser

我们要做的第一步是override由asp.net提供的页面生成过程。所以我们必须创建一个类实现IHttpHandlerFactory接口,我们需要实现的只有两个方法,一个是GetHandler(),它是在一个HTTP Request开始时被调用;另一个是ReleaseHandler(),调用可以让IHttpHandlerfactory进行清理工作。    

例子:

using System;

using System.Web;

using System.Web.UI;



namespace Michael.Web.HttpHandler

{

    /// <summary>

    /// 一个简单的HttpHandler

    /// </summary>

    public class Factory:System.Web.IHttpHandlerFactory

    {

        public IHttpHandler GetHandler(HttpContext context, string url, string path, string objectName)

        {

            return Controller.getViewObject(path, objectName, context);

        }

        

        public void ReleaseHandler(IHttpHandler Handler)

        {

        }

    }

}



注意:GetHandler()必须返回一个实现IHttpHandler接口的对象,Controller是另一个我们自定义的类

接下来我们要修改web.config

<configuration>

  <httphandlers>

    <add verb="*" path="*.aspx" type="Michael.Web.HttpHandler.Factory,Michael.Web.HttpHandler" />

  </httphandlers>

</configuration>

我们这里还是采用.aspx作为后缀名,其实你可以自定义这个后缀名



例子:Controller.cs

namespace Michael.Web.HttpHandler

{

        using System;

    using System.Web;

    using System.Web.UI;

    using System.Collections.Specialized;



    /// <summary>

    ///    Controller继承了System.Web.UI.Page作为ASP.NET页面的handler

    /// </summary>

    public class Controller : System.Web.UI.Page

    {

        public Controller()

        {

           this.Init += new Sys
 
 
本站关键词:
|东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作||东莞网络实名|东莞百度baidu推广|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|横沥网站建设网页制作|常平网站建设网页制作|虎门网站建设网页制作|厚街网站建设网页制作|
域名注册 | 虚拟主机 | 网站建设 | 网站推广 | 广告设计 | 帮助中心 | 软件中心 | 关于腾达
东莞市腾达信息工程有限公司      本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610   邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076 24小时服务热线:13712032014
© 2002~2005 腾达网络   版权所有