抱歉,本人的学习笔记,所以比较潦草,没有整理。但愿大家能看的懂。
首先,由于需要学习Jquery,那么为了实现Ajax,使用了ashx文件。
ashx页面和 WebHandler指令将实例化了一个派生于IHttpHandler的对象,只需要在ProcessRequest方法里写响应代码即可,相对 Page显然轻量很多。
@WebHandler 为Http handler文件(.ashx)定义属性(Attribute)和编译选项。
属性
Class 指定一个继承自IHttpHandler的类,当handler被请求时将被实例化用来响应请求。这个属性是必须的
CodeBehind 指定Class对应的文件,基本上没用,主要是用来支持VS显示的,可以去掉。
编译选项
Debug 默认是false,所以非调试就不用打开,影响性能,可以省略
Description 关于当前handler的描述,ASP.NET解析时忽略,可能调试时能提供辅助信息,可以省略
Language 默认C# ,可以省略
WarningLevel 0-4 默认我也不知道是几,可以省略。
那么关于12个asp.net的
文本模板指令语法
指定当页和用户控件编译器处理 ASP.NET Web 窗体页 (.aspx) 和用户控件 (.ascx) 文件时所使用的设置。参考如下:
<% @ webhandler language="C#" class="AverageHandler" %>
using System;
using System.Web;
public class AverageHandler : IHttpHandler
{
public bool IsReusable
{ get { return true; } }
public void ProcessRequest(HttpContext ctx)
{
ctx.Response.Write("hello");
}
}
关于IsReusable ,请参考下面文章
是可以被别的请求重用实例,能提高效率。
当你希望从ashx或HttpHandler里访问你的Session时,你必须实现IReadOnlySessionState接口.
代码:
using System;
using System.Web;
using System.Web.SessionState;
public class DownloadHandler : IHttpHandler, IReadOnlySessionState
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext ctx)
{
ctx.Response.Write(ctx.Session["fred"]);
}
}
以下资源:
http://www.cnblogs.com/zgqys1980/archive/2008/03/11/1100863.html
那么对于Httphandler和Httpmodule的工作原理,请参考下面文章
首先是微软的
System.Web 命名空间中的接口,详细介绍了上面的工作原理,
实现 IHttpHandlerFactory 接口的类除了动态创建实现 IHttpHandler 接口的类的新实例