你的位置:首页 > ASP.net教程

[ASP.net教程]iis6 简单随机码例子


解决 随机码 在win2003 iis6 的服务器不能显示

 

显示随机码 :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="TestDemo.login" %><!DOCTYPE html><html ="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  <title></title>   <script language="javascript" type="text/javascript">     function ChangeCode()     {          var date = new Date();       var myImg = document.getElementById("ImageCheck");            var GUID = document.getElementById("lblGUID");              if(GUID != null)       {         if(GUID.innerHTML != "" && GUID.innerHTML != null)         {           myImg.src = "Vcode.aspx?GUID="+GUID.innerHTML+"&flag="+date.getMilliseconds()                  }       }       return false;     }     </script></head><body>  <form id="form1" runat="server" method="post" >  <div>    <asp:Label ID="lblGUID" runat="server" Style="display: none"></asp:Label>   <a id="A2" href="" onclick="ChangeCode();return false;">     <asp:Image ID="ImageCheck" runat="server" ImageUrl="../Vcode.aspx?GUID=GUID"      ImageAlign="AbsMiddle" ToolTip="看不清,换一个"></asp:Image></a>  </div>  </form></body></html>

 



//载入事件

protected void Page_Load(object sender, EventArgs e)    {      if (!this.IsPostBack)      {        this.ViewState["GUID"] = System.Guid.NewGuid().ToString();        this.lblGUID.Text = this.ViewState["GUID"].ToString();      }    }

 

//随机码页面

空页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Vcode.aspx.cs" Inherits="TestDemo.Vcode" %>

 

后台

using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace TestDemo{  public partial class Vcode : System.Web.UI.Page  {    protected void Page_Load(object sender, EventArgs e)    {      string checkCode = GetRandomCode(4);      Session["CheckCode"] = checkCode;      SetPageNoCache();      CreateImage(checkCode);    }    /// <summary>    /// 设置页面不被缓存    /// </summary>    private void SetPageNoCache()    {      Response.Buffer = true;      Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);      Response.Expires = 0;      Response.CacheControl = "no-cache";      Response.AppendHeader("Pragma", "No-Cache");    }    private string CreateRandomCode(int codeCount)    {      string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,M,N,P,Q,R,S,T,U,W,X,Y,Z";      string[] allCharArray = allChar.Split(',');      string randomCode = "";      int temp = -1;      Random rand = new Random();      for (int i = 0; i < codeCount; i++)      {        if (temp != -1)        {          rand = new Random(i * temp * ((int)DateTime.Now.Ticks));        }        int t = rand.Next(35);        if (temp == t)        {          return CreateRandomCode(codeCount);//性能问题        }        temp = t;        randomCode += allCharArray[t];      }      return randomCode;    }    private string GetRandomCode(int CodeCount)    {      string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,M,N,P,Q,R,S,T,U,W,X,Y,Z";      string[] allCharArray = allChar.Split(',');      string RandomCode = "";      int temp = -1;      Random rand = new Random();      for (int i = 0; i < CodeCount; i++)      {        if (temp != -1)        {          rand = new Random(temp * i * ((int)DateTime.Now.Ticks));        }        int t = rand.Next(33);        while (temp == t)        {          t = rand.Next(33);        }        temp = t;        RandomCode += allCharArray[t];      }      return RandomCode;    }    private void CreateImage(string checkCode)    {      int iwidth = (int)(checkCode.Length * 14);      System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);      Graphics g = Graphics.FromImage(image);      Font f = new System.Drawing.Font("Arial ", 10);//, System.Drawing.FontStyle.Bold);      Brush b = new System.Drawing.SolidBrush(Color.Black);      Brush r = new System.Drawing.SolidBrush(Color.FromArgb(166, 8, 8));      //g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);      //      g.Clear(Color.AliceBlue);//背景色      g.Clear(System.Drawing.ColorTranslator.FromHtml("#99C1CB"));//背景色      char[] ch = checkCode.ToCharArray();      for (int i = 0; i < ch.Length; i++)      {        if (ch[i] >= '0' && ch[i] <= '9')        {          //数字用红色显示          g.DrawString(ch[i].ToString(), f, r, 3 + (i * 12), 3);        }        else        {  //字母用黑色显示          g.DrawString(ch[i].ToString(), f, b, 3 + (i * 12), 3);        }      }      //for循环用来生成一些随机的水平线      //      Pen blackPen = new Pen(Color.Black, 0);      //      Random rand = new Random();      //      for (int i=0;i<5;i++)      //      {      //        int y = rand.Next(image.Height);      //        g.DrawLine(blackPen,0,y,image.Width,y);      //      }      System.IO.MemoryStream ms = new System.IO.MemoryStream();      image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);      //history back 不重复      Response.Cache.SetNoStore();//这一句           Response.ClearContent();      Response.ContentType = "image/Jpeg";      Response.BinaryWrite(ms.ToArray());      g.Dispose();      image.Dispose();    }      }}