您的位置:首页 > 理论基础 > 计算机网络

Asp.net中创建程序集以及一个简单的IHttpHandler 实现

2009-08-21 15:13 721 查看
1.建立一程序集(Handlers),并在程序集中添加一个简单的IHttpHander实现(IDE:VS2005)
1.1 右健->添加新项目->类库,命名为Handlers
1.2 选择Handlers->引用,点右健,添加System.Web引用(这步很重要,不然在程序中会提示找不到IHttpHandler接口)
1.3 建立TestHandler.cs,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;
namespace Handlers
{
    public class TestHandler:IHttpHandler,IRequiresSessionState
    {
        #region IHttpHandler 成员
        public bool IsReusable
       {
            get { return false; }
       }
       public void ProcessRequest(HttpContext context)
       {
           context.Response.Write("Hello World!");
       }
       #endregion
    }
}

1.4 选择所在web根目录下的bin文件夹,点右健->添加引用->项目->Handlers.这样bin目录下多出两个文件:Handlers.dll和Handlers.pdb
1.5 修改Web.Config加入:
<%-- 
    所有以.jsp结尾的请求都会交给Handlers.dll中的Handlers.TestHandler处理
    verb="*" 表示所有的HTTP 请求类型(GET,HEAD,POST等)
--%>
<add verb="*" path="*.jsp" type="Handlers.TestHandler,Handlers"/>

2.采用ashx
也可以把功能代码完全嵌套到ashx中,如apsx般使用,如下:
<%@ WebHandler Language="C#" Class="TestHandler" %>
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;

public class TestHandler : IHttpHandler, IRequiresSessionState{
    #region IHttpHandler 成员
    public bool IsReusable{
        get { return false; }
    }

   public void ProcessRequest(HttpContext context){
        HttpSessionState Session = context.Session;
        context.Response.Write("Hello World!");
        Session.Add("test", "test");
        context.Response.Write(Session["test"]);
    }
    #endregion
}

3.小结
3.1 .Net里面的程序集非常类似Java中的jar包,可以非常方便的管理C#程序文件.
3.2 Aspx页面是继承Page类的,而Page类实现了IHttpHandler接口.页面请求最终提交给Page的ProcessRequest()方法(来自IHttpHandler)处理并生成响应.
我们可以自定义实现IHttpHandler.用来扮演传统MVC开发模式中的Controller角色,用来起控制转发的作用,非常类似于Java web开发中的Servlet.
3.3 采用第一种方式的好处是配置比较灵活;第二种方式可以很好的在页面中如aspx般引用,比如生成验证码图片等等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐