在学习AllEmpty大神的从零开始编写自己的C#框架系列文章中,发现的问题:在验证码的缓存Session["vcode"]的赋值时,发现Session["vcode"]的值一直为null。
发现原来是在调用验证码生成类给Session["vcode"]赋值时,这个Session["vcode"]还没有创建,所以无法赋值。
1 //生成验证码 2 imgCaptcha.ImageUrl = "Application/Vcode.ashx?t=" + DateTime.Now.Ticks;
Vcode.ashx中,验证码生成并向Session["vcode"]赋值:
1 VerificationCode vcode = new VerificationCode 2 { 3 CountCode = 5, 4 ImageHeight = 32, 5 ImageWidth = 100, 6 NoiseLine = 50, 7 NoisePoint = 80, 8 FontSize = 24 9 }; 10 //生成验证码 11 vcode.GetCaptcha(); 12 //向Session["vcode"]中赋值 13 HttpContext.Current.Session["vcode"] = vcode.Code; 14 string code = HttpContext.Current.Session["vcode"].ToString();//调试用,会报【未将对象引用设置到对象的实例】错误
解决办法是在调用Vcode.ashx之前,声明Session["vcode"]
1 //声明Session["vcode"],并赋空值 2 Session["vcode"] = string.Empty; 3 //生成验证码 4 imgCaptcha.ImageUrl = "Application/Vcode.ashx?t=" + DateTime.Now.Ticks;
原文:http://www.cnblogs.com/Amyn/p/4276344.html