working-yycc

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
下面就开始具体的HTTP处理程序的学习

首先要介绍两个接口,实际上HTTP处理程序只不过是实现该接口的托管类。
同步接口 IHttpHandler,这个接口只有两个成员
公共属性  IsReusable       获得一个布尔值,指示另一个请求是否可以使用该HTTP处理程序的实例
                         如果 IHttpHandler 实例可再次使用,则为 true;否则为 false。
 
公共方法  ProcessRequest  该方法 处理Http请求。参数 HttpContext对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。

下面当然是进行一个helloword级别的demo啦

第一步  自定义一个实现了IHttpHandler的类
using System.Web;


namespace WebApplication1
{
    
public class SimpleHandler : IHttpHandler
    {
        
public void ProcessRequest(HttpContext context)
        {
            context.Response.Write(
"<H1>This is an HttpHandler Test.</H1>");
            context.Response.Write(
"<p>Your Browser:</p>");
            context.Response.Write(
"Type: " + context.Request.Browser.Type + "<br>");
            context.Response.Write(
"Version: " + context.Request.Browser.Version);
        }

        
public bool IsReusable
        {
            
get { return true; }
        }
    
    }
}
可以看见该类只是单纯的实现了IHttpHandler接口,做的事情就是让相应流中写出浏览器版本号之类的信息

第二步
向web.config注册信息
<httpHandlers>
  
<add verb="*" path="Default.aspx" type="WebApplication1.SimpleHandler"/>
</httpHandlers>

add节点的属性
verb  表示受支持的一些Http动词列表 如GET,PUT,POST,通配符(*)
path  表示程序需要处理的资源 如:*.aspx,a url
type  表示一个逗号隔离的类/程序集组合,如果没有程序集可以省略。

在完成了以上2步之后我们浏览Default.aspx时,虽然我们没有对页面作任何操作但是页面显示效果如下



异步接口 IHttpAsycHandler,该接口同样也只有两个成员
公共方法
BeginProcessRequest     初始化一个对指定Http处理程序的异步调用
IAsyncResult BeginProcessRequest (
    HttpContext context,//一个HttpContext对象
    AsyncCallback cb,//异步方法完成时要调用的委托
    Object extraData//
处理该请求所需的所有额外数据
)

EndProcessRequest       终止异步调用
void EndProcessRequest (
    IAsyncResult result//
包含有关进程状态信息的IAsyncResult
)

接下来的文章中我会介绍一些负责详细的例子。

posted on 2007-06-08 00:23  yycc  阅读(232)  评论(0)    收藏  举报