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 ...
随机推荐
- [python]Markdown图片引用格式批处理桌面应用程序
需求 使用python编写一个exe,实现批量修改图片引用,将修改后的文件生成为 文件名_blog.md.有一个编辑框,允许接收拖动过来md文件,拖入文件时获取文件路径,有一个编辑框编辑修改后的文件的 ...
- 【Web前端】【疑难杂症】轮播图图片自适应显示问题(bootstrap3轮播图)
关键代码 html <!-- 轮播图开始--> <div id="header" class="carousel slide"> < ...
- 【前端】HTML编码效提升:快速生成HTML标签
目录 1.生成多级标签 2.生成同级标签 3.生成注释 4.生成多个相同标签 5.生成带class标签 6生成带id标签. 7.生成带内容标签1 8.生成带内容标签2 9.生成带属性标签 GIF演示: ...
- 【转载】Spring Cloud Gateway监控
http://www.imooc.com/article/290822 欢迎加入Spring Cloud Gateway监控豪华套餐-- 只要为Spring Cloud Gateway添加Spring ...
- intellij idea 自动生成test单元测试
1. 创建测试类 打开IDEA,在任意类名,任意接口名上,按ctrl+shift+t选择Create New Test image 然后根据提示操作(默认即可),点击确认,就在项目的/test/j ...
- Visual Studio - API调试与测试工具之HTTP文件
后端开发,我们对于Api接口调试测试大致有以下方法:单元测试.Swagger.Postman. 但是每种方式也都有其局限性,几年前使用Visual Studio Code开发过一段时间,接触了REST ...
- P10952 聚会 题解
题目链接 题目大意 对于一棵树,求出一个点对于给定的三个点(以下简称 $x$,$y$,$z$ 且可以重复)距离最短. 题解 对于点的距离,不难想到 LCA 处理.而对于本题,则有两种情况. 第一问 三 ...
- Supermap Objects API开发中禁用默认的选择集显示风格,启用自定义的显示风格的代码
//#region 使用自定义风格设置选中状态 Selection selection = new Selection();//从该记录集获取选择集 selection.FromRecordset(r ...
- Detectron2使用
Detectron2使用 Detectron2安装 git clone https://github.com/facebookresearch/detectron2.git cd detectron2 ...
- 闲着没事,用STC12C5616AD制作一个74hc595测试仪
手头有些特别廉价的直插74hc595,怕这些595因为廉价而质量不过关,因而萌发了制作一个测试仪的想法. 用测试仪先对595进行测试,功能正常了,再接入电路应用. 该测试仪能自动向595写入数据,再读 ...