1.方式一:

public class VCode
{/// <summary>/// 生成验证码图片 字节数组/// </summary>/// <returns></returns>public byte[] GetVCode(){using (Image img = new Bitmap(90, 30)){string strCode = GetRandomStr();HttpContext.Current.Session["vcode"] = strCode;using (Graphics g = Graphics.FromImage(img)){g.Clear(Color.White);g.DrawRectangle(Pens.Blue, 0, 0, img.Width - 1, img.Height - 1);DrawPoint(g);g.DrawString(strCode, new Font("微软雅黑", 15), Brushes.Blue, new PointF(5, 2));DrawPoint(g);using (System.IO.MemoryStream ms = new MemoryStream()){//将图片 保存到内存流中
                    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//将内存流 里的 数据  转成 byte 数组 返回return ms.ToArray();}}}return null;}Random random = new Random();/// <summary>/// 生成随机数/// </summary>/// <returns></returns>string GetRandomStr(){string str = string.Empty;string[] strArr = { "再", "N", "B", "的", "梦", "想", "也", "抵", "不", "过", "S", "B", "一", "样", "的" ,"坚","持"};for (int i = 0; i < 4; i++){int index = random.Next(strArr.Length);str += strArr[index];}return str;}/// <summary>/// 画线段/// </summary>/// <param name="g"></param>void DrawPoint(Graphics g){Pen[] pens = { Pens.Blue, Pens.Black, Pens.Red, Pens.Green };Point p1;Point p2;int length = 1;for (int i = 0; i < 50; i++){p1 = new Point(random.Next(79), random.Next(29));p2 = new Point(p1.X - length, p1.Y - length);length = random.Next(5);g.DrawLine(pens[random.Next(pens.Length)], p1, p2);}}
}

调用:

方式二:

使用一般处理程序

ValidateCode.ashx下载

调用

3.得出结论

原来mvc中也是可以用一般处理程序的,因为mvc与webform用的是同一天asp.net框架。当请求到达请求管道的时候,在第七个事件中,看请求有没有实现mvchandler接口,如果没有就跳过第七个事件,进入第八个事件,在第8个事件中,创建一般处理程序对象,然后在第11和12事件之间,调用对象的PR()方法

转载于:https://www.cnblogs.com/kimisme/p/4524150.html

MVC系列学习(十五)-验证码相关推荐

  1. 第十五届智能车竞赛芯片选型浅析

    ➤ 01第十五届竞赛 众所周知,第十五届智能车竞赛虽然来晚了几个月,但依然热闹非凡,芯片厂商不再由NXP独家提供,呈现了卓老师所说的三足鼎立的局面,可以选择由NXP.Infineon.STC三家公司提 ...

  2. IT职场人生系列之十五:语言与技术II

    本文是IT职场人生系列的第十五篇 本篇延续了技术与语言I的内容(之十二),搜集了之后大家的一些评论和我的反馈,整理在这里. "新人学老技术有风险"的实质 其实不是说老技术没有学习的 ...

  3. HTML+CSS系列学习 第五篇

    HTML+CSS系列学习:重生之我要精通编程语言修仙 第五篇 四十五.b与i标签 四十六.引用标签 四十七.iframe标签 四十八.br与wbr标签 四十九.pre与code标签 五十.map和ar ...

  4. Spring IOC系列学习笔记五:context:component-scan 节点解析

    原文地址程序员囧辉大佬 相关文章 Spring IOC系列学习笔记一:前置刷新 Spring IOC系列学习笔记二:obtainFreshBeanFactory方法 Spring IOC系列学习笔记三 ...

  5. 盘点:三十五个非主流开源数据库

    盘点:三十五个非主流开源数据库 几乎每个Web开发人员都有自己喜欢的数据库,或自己最熟悉的数据库,但最常见的无外乎以下几种: MySQL PostgreSQL MSSQL Server SQLite ...

  6. 【十五、网站公安备案】2021最详细wordpress博客建站教程(2021.03.04更新)

    通过本wordpress博客建站教程系列系列文章,你可以不懂网页代码条件下,搭建一个谷歌insight测评90分的个人博客,最低费用在每年80块.本人搭建博客小站点击下面链接即可进入:         ...

  7. 【十五】【vlc-android】vlc-sout流媒体输出端源码实现分析【Part 2】【03】

    此章节分析承接上一章分析: [十五][vlc-android]vlc-sout流媒体输出端源码实现分析[Part 2][02] 10.1.5.bs_read_ue实现分析: // [vlc/inclu ...

  8. coreelec 下载app_DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南...

    DY的瞎折腾系列 篇十五:N1多媒体系统CoreELEC 百度云下载指南 2019-04-26 15:28:57 64点赞 427收藏 117评论 你是AMD Yes党?还是intel和NVIDIA的 ...

  9. 2021年大数据HBase(十五):HBase的Bulk Load批量加载操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase的Bulk Load批量加载操作 一.Bulk L ...

最新文章

  1. 数据结构遍历顺序栈_链栈的初始化与遍历
  2. C++Primer:函数(参数传递:引用形参)
  3. 【数据竞赛】长文本竞赛上分的三种策略。
  4. php验证ip地址的函数,php使用preg_match()函数验证ip地址的方法
  5. begintrans返回值_SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法
  6. java二叉树删除子树_132-BST删除有一颗子树的结点
  7. asp.net中的加密方法
  8. simscape multibody仿真报错装配位置_大型结构件虚拟装配仿真软件,三维数字化分析,现场直接调整...
  9. c15语言中不支持十六进制的数据,从十六进制字符串中提取数据
  10. 这是一篇关于如何成为一名AI算法工程师的长文
  11. leetcode LCP3 机器人大冒险(C++)
  12. 二极管和稳压管的区别
  13. linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux...
  14. Python特定场景数据内型“解压”操作
  15. 机器学习从抬脚到趴倒在门槛No.34
  16. 有了这个“神级”功能,会Excel就能轻松玩转BI数据可视化分析啦
  17. QuickIndex 通讯录快速检索
  18. %lld,%d,%hd,%hhd在打印时的“潜规则”
  19. 为什么非常想要一样东西的时候却得不到,但慢慢就不想要了?
  20. 【半年总结】2017年上半年总结——有些路总要自己走过才知道

热门文章

  1. WordPress post和page的区别
  2. Sensoro告诉你ibeacon为什么这么火?
  3. python txt转dataframe_Python格式化解析不规则txt文本并转为dataframe
  4. 转换文档参数_1分钟教会你将Excel转换成Word,简单高效,办公人士必备神技
  5. iptables总结--理解四表五链/snat/dnat/redirect/synproxy/性能
  6. HBase之MVCC
  7. android 获取芯片版本_谷歌:未来Android手机将获得4年软件更新
  8. mysql percona 密码设置_Percona mysql5.7 默认密码
  9. alias怎么每次登陆都保存_设置alias别名并使之重启或者注销用户之后依旧生效...
  10. 小米更新显示非官方rom_魔趣ROM 安装刷入教程(小白新手)