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 ...
随机推荐
- T 语言语法设计(预审稿)
欢迎吐槽 一. 字面量 1. 数字字面量 0, 0xff, 0b10_01, .1 2. 字符串字面量 'x', "x\n\uffff\Uffffffff", `x{1}y` 3. ...
- nginx-tengine-invalid IPv6 address in resolver-解析器中无效的IPv6地址
问题描述:解析器中无效的IPv6地址 [root@dm ~]# nginx -t nginx: [emerg] invalid IPv6 address in resolver "[fe80 ...
- Qt/C++音视频开发77-获取本地有哪些摄像头名称/ffmpeg命令日志方式
一.前言 上一篇文章讲使用ffmpeg函数接口去获取本地摄像头信息,这种方式只能从ffmpeg5版本开始才具备,那ffmpeg3/4只能干瞪眼?那肯定不行的,必须要想办法打通这个功能,查阅信息发现可以 ...
- Qt编写的项目作品8-视频综合应用示例
一.功能特点 1.1 基础功能 支持各种音频视频文件格式,比如mp3.wav.mp4.asf.rm.rmvb.mkv等. 支持本地摄像头设备,可指定分辨率.帧率. 支持各种视频流格式,比如rtp.rt ...
- matlab中mat文件的生成和读取
1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...
- [转]在WorldWind中加入*.x格式的三维模型
Nasa支持的WorldWind项目最近推出了1.4RC5版,可以加入三维模型,效果如下图所示: 点击查看大图 WW1.4对XML配置文件增加了许多新的元素,其中ModelFeature就是用来增加三 ...
- JVM实战—4.JVM垃圾回收器的原理和调优
大纲 1.JVM的新生代垃圾回收器ParNew如何工作 2.JVM老年代垃圾回收器CMS是如何工作的 3.线上部署系统时如何设置垃圾回收相关参数 4.新生代垃圾回收参数如何优化 5.老年代的垃圾回收参 ...
- Scala,一门「特立独行」的语言!
入门 Spark 的路上很难不接触 Scala . Scala 似乎是为 java 提供了很多『类似函数式编程』的语法糖,这里记录一下这个语言独特的地方分享给读者朋友们. 参考资料主要有: 曹洁 . ...
- DateTimeExtensions:一个轻量C#的开源DateTime扩展方法库
推荐一个专门为System.DateTime编写的扩展方法库. 01 项目简介 该项目主要是为System.DateTime和System.DateTimeOffset的编写的扩展方法,包括自然日期差 ...
- o3 发布了,摔碎了码农的饭碗
大家好,我是汤师爷~ 在 2024 年底,OpenAI 发布了最新推理模型 o3.o3模型相当炸裂,在世界级编程比赛中拿下第 175 名,打败 99.9% 的参赛者.AI 写代码都赶上顶级程序员了,程 ...