【ASP.NET】请求一般处理程序获取验证码

其实有很多生成验证码的简单方法,这里给出一种通过请求一般处理程序来获得验证码,适用于多个页面使用:

首先在网站中添加一个页面,然后添加Imahe控件,用来显示验证码

<image src="Code.ashx" />//Code.ashx    这里用来显示验证码

我们来看看验证码的生成

public class Code : IHttpHandler {        

  public void ProcessRequest (HttpContext context) \

    {        

      context.Response.ContentType = "image/jpeg";        

      string code = CreateCode();        

      Image img = CreateImg(code);      //这里在使用那个bmp对象,所以下面的using语句不能用

      img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);    

     }

 

      private string CreateCode()     ///这里用来生成随机的四个字符

  {        

    Random rand = new Random();        

    string s = "1234567890abcdefghijklmn";     //随机写的字符串,从这些字符串随机选择字符生成验证码的字符   

    string code = "";        

    for (int i = 0; i < 4; i++)        

    {            

      code+=s[rand.Next(0,s.Length)];        

    }         return code;            

  }

       private Bitmap CreateImg(string code) //这里来生成验证码,也就是一张包含字符的图片   

   {        

    Bitmap bmp = new Bitmap(60,40);    //这里不能用using语句,因为 上面还有使用这个bmp对象

    using(Graphics g = Graphics.FromImage(bmp))        

    {

      g.FillRectangle(Brushes.Red, 0, 0, bmp.Width, bmp.Height);        

      g.FillRectangle(Brushes.White, 1, 1, bmp.Width - 2, bmp.Height - 2);        

      g.DrawString(code, new Font("宋体", 14), Brushes.Black, 5, 5);   

    }     

    return bmp;    

     }          

        public bool IsReusable {         get {             return false;         }     }

}

 到这里就结束了,其实没有什么难点的.

 

你可能感兴趣的:(asp.net)