ASP.NET生成驗(yàn)證碼的方法
本文實(shí)例為大家分享了ASP.NET生成驗(yàn)證碼的具體代碼,供大家參考,具體內(nèi)容如下
首先,添加一個(gè)一般處理程序

注釋很詳細(xì)了,有不懂的歡迎評(píng)論
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構(gòu)造Image
Image img = new Bitmap(100, 60);
//Graphics繪畫Image
Graphics graphics = Graphics.FromImage(img);
Random random = new Random(DateTime.Now.Millisecond);
//驗(yàn)證碼的四位數(shù)
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);
//把生成的隨機(jī)數(shù)變成字符串,通過char進(jìn)行轉(zhuǎn)換
string validCode = string.Format($"{(char)charNum1}{(char)charNum2}{(char)charNum3}{(char)charNum4}");
//放進(jìn)Session進(jìn)行存儲(chǔ),記得繼承接口,否則瘋狂報(bào)空指針
context.Session["verification_Code"] = validCode;
//字體的大小和類別
Font font = new Font("宋體", 24);
//隨機(jī)的顏色
Brush brush1 = new SolidBrush(colors[random.Next(0, colors.Length - 1)]);
//DrawString的四個(gè)參數(shù),第一個(gè)是要寫的字符,第二個(gè)是字體,第三個(gè)是顏色,第四個(gè)是坐標(biāo)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;
}
}
}
}
一個(gè)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>
效果圖

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于ASP.NET Core數(shù)據(jù)保護(hù)生成驗(yàn)證token示例
本篇文章主要介紹了基于ASP.NET Core數(shù)據(jù)保護(hù)生成驗(yàn)證token,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
asp.net在后端動(dòng)態(tài)添加樣式表調(diào)用的方法
這篇文章主要介紹了asp.net在后端動(dòng)態(tài)添加樣式表調(diào)用的方法,涉及asp.net操作樣式表的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
詳解高效而穩(wěn)定的企業(yè)級(jí).NET Office 組件Spire(.NET組件介紹之二)
這篇文章主要介紹了詳解高效而穩(wěn)定的企業(yè)級(jí).NET Office 組件Spire(.NET組件介紹之二),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-12-12
.NET 解決TabControl 頁里面多余邊距問題經(jīng)驗(yàn)分享
不知道各位同學(xué)有沒有遇到在向TabPage添加內(nèi)容后,里面的東西總是填不滿 TabPage,總是有幾個(gè)像素的空白邊距2012-04-04
ASP.NET Page函數(shù)調(diào)用順序解析
asp.net頁面事件執(zhí)行順序,需要的朋友可以參考下。2010-06-06
.Net中如何將一個(gè)實(shí)例的內(nèi)存二進(jìn)制內(nèi)容讀出來(超簡單方法)
這篇文章主要介紹了如何將一個(gè)實(shí)例的內(nèi)存二進(jìn)制內(nèi)容讀出來(超簡單方法),接下來的內(nèi)容中,我們將利用一個(gè)簡單的方法輸出指定實(shí)例的字節(jié)序列,并此次分析值類型和引用類型實(shí)例在內(nèi)存的布局,需要的朋友可以參考下2023-07-07
ASP.NET技巧:同時(shí)對(duì)多個(gè)文件進(jìn)行大量寫操作對(duì)性能優(yōu)化
ASP.NET技巧:同時(shí)對(duì)多個(gè)文件進(jìn)行大量寫操作對(duì)性能優(yōu)化...2006-09-09
如何在ASP.NET Core 的任意類中注入Configuration
這篇文章主要介紹了如何在 ASP.NET Core 的任意類中注入Configuration ,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04

