<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
<form runat="server">  
    <image src="Image.ashx" onClick="this.src='Image.ashx?aaa=aaa'"></image>
    验证码:<asp:TextBox ID="TextBox1" runat="server" onClick="this.src='Image.ashx?aa='+new Date()"></asp:TextBox>
    
    <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">登 陆</asp:LinkButton>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        string old_code = Convert.ToString(Session["code"]);
        if (old_code == TextBox1.Text)
        {
            Response.Write("验证成功!");
        }
        else {
            Response.Write("验证失败1");
            
        }
    }
}
 
  
<%@ WebHandler Language="C#" Class="Image" %>
using System;
using System.Web;
//在一般应用程序中使用session要引用System.Web.SessionState.IRequiresSessionState
public class Image : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
    
    public void ProcessRequest (HttpContext context) {
        
        context.Response.ContentType = "image/JPEG";
        //创建一个画布
        using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(100, 30)) 
        {
            //创建一个图片格式
            using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap)) 
            {
                /*g.DrawString("平安北京", new System.Drawing.Font("宋体", 16), System.Drawing.Brushes.Green, new System.Drawing.PointF(0, 0));
                g.DrawEllipse(System.Drawing.Pens.Red, new System.Drawing.Rectangle(10, 10, 10, 10));
                System.Drawing.Pen pen = (System.Drawing.Pen)System.Drawing.Pens.Red.Clone();
                pen.Width = 3;
                g.DrawEllipse(pen, new System.Drawing.Rectangle(20, 20, 10, 10));
                bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);*/
                Random rand = new Random();
                int code = rand.Next(10000, 99999);
                string strCode = code.ToString();
                HttpContext.Current.Session["code"] = strCode;
                g.DrawString(strCode, new System.Drawing.Font("宋体", 16), System.Drawing.Brushes.Green, new System.Drawing.PointF(0, 0));
                g.DrawEllipse(System.Drawing.Pens.Red, new System.Drawing.Rectangle(10, 10, 10, 10));
                bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                
            }
        
        }
        //context.Response.Write("Hello World");
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
}