IHttpHandler实例二-----图像校验码生成器
实例引自《最优化Asp.Net----面向对象开发实践》
HttpHandler可以直接写入.ashx文件而不需要编译。下面这个图像校验码生成器的例子就是这样。生成图像的文本存储于Session对象中,用来与用户的输入进行比较。
文件 Image.ashx
<%@ WebHandler Language="C#" Class="RegisterImagerHandler" %>
imports System
imports system.drawing
imports system.drawing.imaging
imports system.text
imports system.web
imports system.web.sessionstate
public Class RegisterImagerHandler
Implements IHttpHandler
Implements IReguiresSessionState
public 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() as Boolean
get
return true
end get
end property
end class
在一个页面中个引用这个Handler
<img src="image.ashx" alt="security code" />
在梦想和现实之间寻找平衡 在欲望和理想之间左右的妥协!平淡又平凡的努力生活!



浙公网安备 33010602011771号