实例引自《最优化Asp.Net----面向对象开发实践》
HttpHandler可以直接写入.ashx文件而不需要编译。下面这个图像校验码生成器的例子就是这样。生成图像的文本存储于Session对象中,用来与用户的输入进行比较。
文件 Image.ashx

<%@ WebHandler Language="C#" Class =Class="RegisterImagerHandler" %>

imports System
imports system.drawing
imports system.drawing.imaging
imports system.text
imports system.web
imports system.web.sessionstate


public Class RegisterImagerHandlerClass RegisterImagerHandler
Implements IHttpHandler
Implements IReguiresSessionState


public Sub ProcessRequest()sub ProcessRequest(context as HttpContext)
context.Response.ContentType="image/gif"
'//生成背景
dim b as new Bitmap(200,60)
dim g as Graphics=Graphics.FromImage(b)
g.FileRectangle(new SolidBrush(Color.White),0,0,200,60)
'//生成字符
dim font as New Font(FontFamily.GenericSerif,48,FontStyle.Bold,GraphicsUnit.Pixel)
dim r as new Random()
dim letters as string= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
dim letter as string
dim s as new StringBuilder()
dim x as Integer
for x=0 to 4
letter=letters.SubString(r.next(0,letters.length-1),1)
s.append(letter)
g.drawstring(letter,font ,New SolidBrush(color.black),x*38,r.next(0.15))
next x
dim linepen as new Pen(new Solidbrush(color.black),2)
dim x as integer
for x =0 to 5
g.DrawLine(linePen,new Point(r.next(0,199),r.next(0,59)),new point(r.next(0,199),r.next(0,59)))
next x
b.save(context.Response.OutPutStream,ImageFormat.Gif)
context.Session("pfregisterimage")=s.tostring()
context.Response.End()
End Sub

public readonly Property IsReusable()property IsReusable() as Boolean
get
return true
end get
end property
end class

在一个页面中个引用这个Handler
<img src="image.ashx" alt="security code" />