生成验证码的代码如下:
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短时间内过期的问题??