添加一个ashx类,用来生成数据,传递数据
用一个ashx类对象生成验证码,绘制验证码,传递数据
注意:要使用Session需要引用System.Web.SessionState命名空间,让ashx类继承IRequiresSessionState 接口
<%@ WebHandler Language="C#" Class="BackImage" %> using System; using System.Web; using System.Drawing; using System.Web.SessionState; public class BackImage : IHttpHandler,IRequiresSessionState { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/jpeg";//规定返回一个图片 //生成一个验证码 string strCheck = ""; Random r = new Random(); for (int i = 1; i <= 4; i++) { string s = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; int start = r.Next(61); strCheck += s.Substring(start, 1); } //将验证码画在图片上 Bitmap img = new Bitmap(40,20);//造一个空白画板 Graphics gr=Graphics.FromImage(img);//定义一个画板img的画笔 SolidBrush brush=new SolidBrush(Color.White);//定义一个白色的刷子 gr.FillRectangle(brush, 0, 0, 40, 20); //画一个白色长方形背景 Font font=new Font("宋体",13,FontStyle.Italic);//定义一个绘制字符串时,用的字体 brush.Color = Color.Red;//改变刷子的颜色,与背景区别 gr.DrawString(strCheck,font,brush,0,0); //将此图像保存到指定的流中 img.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); //定义一个Session传递数据 context.Session["strCheck"] = strCheck; } public bool IsReusable { get { return false; } } }
ASP网页
注意实现访问随机ashx类文件的方式,和访问Session信息的方式(直接调用Session)