调试实例出错,请高手帮忙啊!
想学.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的值是什么.