这段代码是我根据几个月前 ,我写的“验证码 利用ashx一般处理程序来实现”的一片随笔所想;
见代码:
Page:check.aspx
protected void Page_Load(object sender, EventArgs e)
{
string checkCode = GetRandomCode(4);
Session["CheckCode"] = checkCode;
SetPageNoCache();
CreateImage(checkCode);
}
private void SetPageNoCache()
{
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "No-Cache");
}
private string GetRandomCode(int codeCount)
{
string strNumbers = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random random = new Random();
string randomString = "";
for (int i = 0; i < codeCount; i++)
{
randomString += strNumbers[random.Next(0, 36)].ToString();
}
return randomString;
}
private void CreateImage(string checkCode)
{
Response.ContentType = "image/jpeg";
Bitmap bitmap = new Bitmap(100, 30);
Graphics g = Graphics.FromImage(bitmap);
g.Clear(Color.White);
g.DrawString(checkCode, new Font("Mighty to Save", 18, FontStyle.Italic), Brushes.Black, new PointF(0, 0));
bitmap.Save(Response.OutputStream,ImageFormat.Jpeg);
Response.Cache.SetNoStore();
g.Dispose();
bitmap.Dispose();
}
调用fangshi:
<img src="http://archive.cnblogs.com/a/2043210/check.aspx" rel="nofollow"/>
加"?"的原因是防止验证码不刷新