日期:2014-05-18  浏览次数:20429 次

在chrome中无错!ie8中首次登陆出错,刷新后才能找到session!怎么解决呢?
在chrome中无错!ie8中首次登陆出错,刷新后才能找到session!怎么解决呢?

我做了一个登陆页面,用session来保存验证码,出现如题的问题,请求各位帮忙解决一下!多谢!

错误如下:

未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误: 


行 40: {
行 41: //判断用户输入的验证码是否正确
行 42: if (Session["CheckCode"].ToString().Equals(txtAdminCode.Text.ToString().ToUpper()))
行 43: {
行 44: //usermanage.UserName = txtAdminName.Text;
源文件: d:\nyyq\UserManage\Login.aspx.cs 行: 42 


 


------解决方案--------------------
Session["CheckCode"].ToString()...
你不判断Session["CheckCode"]是否为空就ToString...出错正常了
第一次打开.都没存过checkcode.能不空?
------解决方案--------------------
是缓存的问题,IE8对于图片加载是尽量使用本地缓存。完全不发送http请求。
所以通常的解决方案是用脚本改变图片的src来加载验证码,加载时在链接后面加上随机的query。

不过这还得看你这个图片响应时的http头,如果http头里面约束了不使用private缓存。ie8也不会缓存图片。
------解决方案--------------------
你的验证码的是本页面产生的,并非异步请求,要在CS文件里,设置该页不缓存
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");
}
在PAGELOAD里调用一下!
判断session是否为空,在PAGELODA中用
if(!ispostback){}判断
如果session不存在,就会出现 你现在的这种异常!System.NullReferenceException: 未将对象引用设置到对象的实例