C# 一般处理程序ashx用于验证码
1、用VS2019建立一个web应用程序,选mvc模板
2、选中项目邮件新建文件夹Webservice,然后添加一般处理程序Verify.ashx然后右键打开改写如下
1 public class VerifyCode : IHttpHandler, IRequiresSessionState
2 {
3
4 public bool IsReusable { get { return false; } }
5 private const int width = 90;
6 private const int height = 30;
7 public void ProcessRequest(HttpContext context)
8 {
9 context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
10 context.Response.ClearContent();
11 context.Response.ContentType = "image/Png";
12 context.Response.BinaryWrite(CreateImg(ExfSoft.Common.SecurityUtil.CreateNew(4, true)));
13 context.Response.End();
14 }
15
16 private byte[] CreateImg(string VerifyCode)
17 {
18 //这个宽高可以根据需要确定
19 System.Drawing.Bitmap image = new Bitmap(width, height);
20 //创建图形
21 Graphics g = Graphics.FromImage(image);
22 //创建RectangleF结构指定一个区域
23 RectangleF rectangle = new RectangleF(0, 0, image.Width, image.Height);
24 g.FillRectangle(new SolidBrush(Color.FromArgb(255, 255, 255)), rectangle);
25
26 //背景噪音线
27 System.Random random = new Random();
28 for (int i = 0; i < 15; i++)
29 {
30 int x1 = random.Next(width);
31 int x2 = random.Next(width);
32 int y1 = random.Next(height);
33 int y2 = random.Next(height);
34 g.DrawLine(new Pen(Color.FromArgb(random.Next())), x1, y1, x2, y2);
35 }
36 Font font = new Font("Arial", 14, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
37 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, width, height), Color.Blue, Color.DarkRed, 1.2f, true);
38
39 var chars = new List<Char>();
40 foreach (char s in VerifyCode)
41 {
42 chars.Add(s);
43 }
44
45 g.DrawString(String.Join(" ", chars.ToArray()), font, brush, 10, 5);
46
47 //画图片的前景噪音点
48 for (int i = 0; i < 50; i++)
49 {
50 int x = random.Next(width);
51 int y = random.Next(height);
52 image.SetPixel(x, y, Color.FromArgb(random.Next()));
53 }
54 //画图片的边框线
55 g.DrawRectangle(new Pen(Color.FromArgb(255, 153, 193, 226)), 0, 0, image.Width - 1, image.Height - 1);
56
57 MemoryStream ms = new MemoryStream();
58 //选择透明格式
59 image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
60 //原本是准备输出html流,现在输出图信数据,所以要修改http头
61 return ms.ToArray();
62 }
63 }
3、任意找一个页面如Index.cshtml,添加图片控件和Jquery代码
<img id="verifycode_img" src="/webservice/verifycode.ashx" onclick="" style="vertical-align: middle; margin-left: 10px;" />
<script>
$(function () {
$("#verifycode_img").click(function () {
$(this).attr('src', '/WebService/VerifyCode.ashx?t=' + new Date())
})
})
</script>
4、效果,点击图片验证码将会做相应变化

5、配合input框提交到后台Action里面通过,ExfSoft.Common.SecurityUtil.IsValid("验证码字符串")方法,即可以实现登录验证码功能。
C# 一般处理程序ashx用于验证码的更多相关文章
- jQuery获取一般处理程序(ashx)的JSON数据
昨天有在开发的软件生产线生产流程,RFID扫描IC卡的数据,当中有用到jQuery获取一般处理程序(ashx)的JSON数据.今有把它写成一个小例子,望需要的网友能参考. 在网站中,创建一个一般应用程 ...
- ASP.NET -- 一般处理程序ashx
ASP.NET -- 一般处理程序ashx 如果在一个html页面向服务器端请求数据,可用ashx作为后台页面处理数据.ashx适合用作数据后台处理,相当于WebForm中的aspx.cs文件或 ...
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- 对ASP.NET运行机制之 一般处理程序ashx的学习
一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名.其中一个httpHandler接受并处理一个http请求,类比于Java中的servlet.类比于在Java中 ...
- asp.net 一般处理程序实现网站验证码
使用VerifyCode.ashx一般处理程序生成验证码,实现如下: using System; using System.Drawing; using System.Web; using Syste ...
- asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题
最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception Sys ...
- ashx与验证码
using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; us ...
- Web-----》》》 一般处理程序 ashx
一般处理程序 后缀: 前台页面:.ashx 后台页面:.ashx.cs 打开方式:右键程序集--在浏览器中查看--输入url(如http://localhost:6560/firstAshx.ashx ...
- .net Ajax与后台一般处理程序(ashx) 交互
本文主要实现无动态刷新查询后台数据功能,主要用到ajax+ashx+sqlserver进行交互. 首先需要引用Jquery: <script language="javascript& ...
- 学习笔记05一般处理程序ashx
1.获取由表单传过来的参数var value1 = HttpContext.Request["健"]; 2.使得网站目录下的相对路径转化为绝对路径:(用于文件操作)var file ...
随机推荐
- ArgoCD 简介
fork https://github.com/DevopsChina/lab/tree/main/deploy/lab04-argocd 1. ArgoCD 简介 基于 kubernetes 的声明 ...
- office文件所对应的的 Content-type类型总结
最近做文件下载因为涉及到不同类型的文件,所以重新查阅了一下文件所对应的的content-type类型,好记性不如烂笔头,记录一下. 文件后缀 MIME TYPE .doc application/ms ...
- Swagger2学习——@ApiImplicitParams注解
@ApiImplicitParams:用在请求的方法上,表示一组参数说明 @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面 name:参数 ...
- Qt音视频开发22-音频播放QAudioOutput
一.前言 以前一直以为只有Qt5以后才有QAudioOutput播放音频,其实从Qt4.6开始就有,在Qt6中变成了QAudioSink,功能一样.用QAudioOutput播放音频pcm数据极其方便 ...
- Qt编写地图综合应用20-多浏览器内核
一.前言 本人写Qt程序这么多年,比较喜欢支持多个Qt版本,尤其是钟情于支持任意Qt版本+任意系统+任意编译器,这句话说起来简单其实实现起来就不容易了,首先你得有个很多版本的测试环境,起码十几个Qt环 ...
- 移动端开源 IM 框架 MobileIMSDK v6.0 发布!
一.更新内容简介 本次为主要版本更新(本次更新内容见文末"MobileIMSDK v6.0更新内容 "一节),强势升级,将同时支持TCP.UDP.WebSocket三种协议,精心封 ...
- OpenMMLab AI实战营 第一课笔记
OpenMMLab AI实战营 第一课笔记 OpenMMLab AI实战营第一节课由子豪兄讲解,课程主要内容主要围绕计算机视觉和OpenMMLab开源算法体系以及机器学习和神经网络简介进行展开.这里要 ...
- MySQL 中information_schema、mysql、performance_schema、sys 简介
一.information_schema简介在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库.其中保存着关于MySQL服务器所维护的所有其他数据库的信息. ...
- Nginx配置文件及默认配置说明
默认安装的1.16.1版本的主配置文件nginx.conf如图: 业务性配置引入额外的配置文件/etc/nginx/conf.d/default.conf如图: 现在可以在默认的根目录下找到2个页面 ...
- ctfshow--web11session置空绕过
代码审计 点击查看代码 <?php function replaceSpecialChar($strParam){ $regex = "/(select|from|where|join ...