ASP.NET生成验证码
2023-09-14 08:58:01 时间
首先,添加一个一般处理程序
注释很详细了,有不懂的欢迎评论
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.SessionState;
namespace Project_Practice
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler,IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
//选取的颜色
Color[] colors = { Color.White };
//通过Bitmap构造Image
Image img = new Bitmap(100, 60);
//Graphics绘画Image
Graphics graphics = Graphics.FromImage(img);
Random random = new Random(DateTime.Now.Millisecond);
//验证码的四位数
int charNum1 = random.Next('0', '9' + 1);
int charNum2 = random.Next('0', '9' + 1);
int charNum3 = random.Next('0', '9' + 1);
int charNum4 = random.Next('0', '9' + 1);
//把生成的随机数变成字符串,通过char进行转换
string validCode = string.Format($"{(char)charNum1}{(char)charNum2}{(char)charNum3}{(char)charNum4}");
//放进Session进行存储,记得继承接口,否则疯狂报空指针
context.Session["verification_Code"] = validCode;
//字体的大小和类别
Font font = new Font("宋体", 24);
//随机的颜色
Brush brush1 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
//DrawString的四个参数,第一个是要写的字符,第二个是字体,第三个是颜色,第四个是坐标x,y
graphics.DrawString(((char)charNum1).ToString(), font, brush1, 7, -3);
Brush brush2 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
graphics.DrawString(((char)charNum2).ToString(), font, brush2, 26, -9);
Brush brush3 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
graphics.DrawString(((char)charNum3).ToString(), font, brush3, 50, 0);
Brush brush4 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
graphics.DrawString(((char)charNum4).ToString(), font, brush4, 70, -7);
//保存,格式
context.Response.ContentType = "image/jpeg";
img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
//释放资源
graphics.Dispose();
img.Dispose();
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
一个web窗体
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="verification_Code.aspx.cs" Inherits="Project_Practice.verification_Code" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" ImageUrl="~/Handler1.ashx" />
</div>
</form>
</body>
</html>
效果图
相关文章
- [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI「建议收藏」
- 宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
- asp.net生成HTML
- asp.net生成数字和字母组合的随机数
- asp.net将设有过期策略的项添加到缓存中
- ASP.net动态加载控件时一些问题的总结
- asp.net(C#)动态添加非ASP的标准html控件(如添加Script标签)
- Asp.net页面调用javascript变量的值
- Asp.NET生成静态页面并分页的代码
- asp.net(C#)中给控件添加客户端js事件的方法
- asp.net获取某个时间段的星期并以表格形式排列出来
- jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
- TreeView用法(有代码)(asp.net)
- asp.net生成验证码(纯数字)
- ASP.NET设计网络硬盘之上传文件实现代码
- asp.netc#采集需要登录页面的实现原理及代码
- asp.net实现的计算网页下载速度的代码
- ASP.NET动态生成静态页面的实例代码
- ASP.NET中在一般处理程序中使用session的简单介绍
- asp.netC#生成和解析二维码的实例代码
- asp.net表单提交时防重复提交并执行前台的JS验证
- asp.net创建位图生成验证图片类(验证码类)
- asp.net导出excel数据的常见方法汇总
- ASP.NET生成两个日期范围内随机时间的实现方法
- ASP.NET中使用TreeView显示文件的方法