验证码的问题

生成验证码的代码如下:
private void Page_Load(object sender, System.EventArgs e)
  {
   string checkCode = CreateRandomCode(4);
   Session["CheckCode"] = checkCode;
   CreateImage(checkCode);
  }
  private string CreateRandomCode(int codeCount)
  {
  
   string allChar = "0,1,2,3,4,5,6,7,8,9";
   string[] allCharArray = allChar.Split(',');
   string randomCode = "";
   int temp = -1;
   Random rand = new Random();

   for(int i = 0; i < codeCount; i++)
   {
    if(temp != -1)
    {
     rand = new Random(i*temp*((int)DateTime.Now.Ticks));
    }
    int t = rand.Next(10);
    if(temp == t)
    {
     return CreateRandomCode(codeCount);
    }
    temp = t;
    randomCode += allCharArray[t];
   }
   return randomCode;
  }

  private void CreateImage(string checkCode)
  {

   int iwidth = (int)(checkCode.Length * 16);
   //System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth,22);
   System.Drawing.Image image=System.Drawing.Image.FromFile("~/images/bg.jpg");
   Graphics g = Graphics.FromImage(image);
   Font f = new System.Drawing.Font("Arial", 9, System.Drawing.FontStyle.Regular);
   Brush b = System.Drawing.Brushes.Black;
    //g.Clear(Color.FromArgb(255,255,255));
   g.DrawString(checkCode, f, b,2,2);

   Pen blackPen = new Pen(Color.Black, 0);
          
    System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
    image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);     
   Response.ClearContent();
   Response.ContentType = "image/jpeg";
   
      Response.BinaryWrite(ms.ToArray ());
   Response.End ();
   g.Dispose();
   image.Dispose();
       
  }

在打开页面不进行任何操作几分钟后,进行登陆操作,访问HttpContext.Current.Session["CheckCode"] 却总是空引用,请教各位,怎样可以避免Session短时间内过期的问题??

posted @ 2006-07-19 15:49  巴西人  阅读(352)  评论(1编辑  收藏  举报