把 验证码   产生的随机数 存储到了  Cookie中 然后 在制作成图片  
在登陆页面  用imagebutton   显示  我怎没  取不出 产生的 值     default。aspx
protected void Page_Load(object sender, EventArgs e)
    {
        string tmp = RndNum(8);
        HttpCookie a = new HttpCookie("tempNum", tmp);
        Response.Cookies.Add(a);        this.ValidateCode(tmp);
    } login。aspx
protected void Page_Load(object sender, EventArgs e)
    {
        ImageButton1.ImageUrl = "Default.aspx";        string info = Request.Cookies["tempNum"].Value;        测试
        this.Label2.Text = info;        
    }
老是出现NullReferenceException
小弟谢过了!

解决方案 »

  1.   

    看看是否是客户端禁用了cookie
    还有把你的代码贴完
    这么点代码谁知道有什么问题
      

  2.   

    按理说,应该是login之后才会到default.aspx中吧,login时候还没有写cookie呢,当然NullReferenceException
      

  3.   

    我现在就是  加载login时  同时加载了default(存了cookie)的   就产生了随机数在加载login 时  拿出随机数  验证哦
      

  4.   

    大哥刚才在那边不就跟你说你试试session能不能拿到,如果连session都不能拿到,就逻辑先后顺序的问题
      

  5.   

    验证码就是为了防止客户端恶意注册的啊. 写cookies里不如同玛琪罗防线了不是白弄了.
      

  6.   

    加载login时 同时加载了default
    怎么个同时发那
      

  7.   

    最好弄个判断啊,if(Request.Cookies["tempNum"]!=null){...}
      

  8.   

    http://blog.csdn.net/polarissky/archive/2010/01/15/5193194.aspxCookie 的相关操作
      

  9.   

    我加了 判断 后就是 空的  但是 我在  default页面   试了一下  随机数 时有的 能拿到  但是 到了这边就没了    我 估计是美化成图片后 就有问题了   protected void Page_Load(object sender, EventArgs e)
        {
            string tmp = RndNum(7);        HttpCookie a = new HttpCookie("tempNum", tmp);
            Response.Cookies.Add(a);        this.Label1.Text = tmp;        this.ValidateCode(tmp);        
        }    private void ValidateCode(string VNum)
        {
            Bitmap Img = null;
            Graphics g = null;
            MemoryStream ms = null;        int gheight = VNum.Length * 12;
            Img = new Bitmap(gheight, 25);
            g = Graphics.FromImage(Img);
            //背景颜色
            g.Clear(Color.Snow);
            //文字字体
            Font f = new Font("Arial Black", 10);
            //文字颜色
            SolidBrush s = new SolidBrush(Color.LightSlateGray);
            g.DrawString(VNum, f, s, 3, 3);
            ms = new MemoryStream();
            Img.Save(ms, ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());
            g.Dispose();
            Img.Dispose();
            Response.End();
        }    private string RndNum(int VcodeNum)
        {
            string Vchar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
            string[] VcArray = Vchar.Split(new Char[] { ',' });
            string VNum = "";
            int temp = -1;        Random rand = new Random();        for (int i = 1; i < VcodeNum + 1; i++)
            {
                if (temp != -1)
                {
                    rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
                }            int t = rand.Next(35);
                if (temp != -1 && temp == t)
                {
                    return RndNum(VcodeNum);
                }
                temp = t;
                VNum += VcArray[t];
            }
            return VNum;
        }this.ValidateCode(tmp);我把这句 注掉  能拿到值