IHttpHandler实例二-----图像校验码生成器

实例引自《最优化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" />

转载于:https://www.cnblogs.com/sonrain/archive/2008/07/17/1244982.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值