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

调试实例出错,请高手帮忙啊!
想学.NET,有问题,请高手帮我看看错误的地方是什么原因啊,谢谢
下面是部分代码
 protected void LoginBtn_Click(object sender, EventArgs e)
  {
  ///如果页面输入合法
  if (Page.IsValid == true)
  {
  if (Validator.Text != sValidator)
  {
  Message.Text = "验证码输入错误,请重新输入验证码!!!";
  sValidator = GetRandomint();
  ValidateImage.ImageUrl = sValidatorImageUrl + sValidator;
  return;
  }

  String userId = "";

  ///定义类并获取用户的登陆信息  
  StudentManager.User user = new StudentManager.User();
  SqlDataReader recu = user.GetUserLogin(UserName.Text.Trim(),
StudentManager.User.Encrypt(Password.Text.Trim()));

  ///判断用户是否合法
  if (recu.Read())
  {
  userId = recu["UserID"].ToString();
  }
  recu.Close();

  ///验证用户合法性,并跳转到系统平台
  if ((userId != null) && (userId != ""))
  {
  Session["UserID"] = userId;

  //跳转到登录后的第一个页面
  Response.Redirect("~/DesktopModules/Main.aspx");
  }
  else
  {
  sValidator = GetRandomint();
  ValidateImage.ImageUrl = sValidatorImageUrl + sValidator;
  ///显示错误信息
  Message.Text = "你输入的用户名称或者密码有误,请重新输入!";
  }
  }
  }

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

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

源错误: 


行 47: 
行 48: ///判断用户是否合法
行 49: if (recu.Read())
行 50: {
行 51: userId = recu["UserID"].ToString();
 

源文件: e:\vs.net学习光盘\源程序\ch12\StudentManager\Default.aspx.cs 行: 49 

堆栈跟踪: 


[NullReferenceException: 未将对象引用设置到对象的实例。]
  Default.LoginBtn_Click(Object sender, EventArgs e) in e:\vs.net学习光盘\源程序\ch12\StudentManager\Default.aspx.cs:49
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102

 



------解决方案--------------------
recu 是 null 了,当然不能Read了,看看根源问题,没取到数据
------解决方案--------------------
recu可能是NULL!
你也可以用recu.hasrow()来判断。
你说还出错。
你设个断点.看下recu的值是什么.