未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 20: string userName = StrHelper.ConvertSql(UserName.Text.ToString());
行 21: string userPwd = StrHelper.EncryptPassword(PassWord.Text.ToString(), StrHelper.PasswordType.MD5);
行 22: if (bs.isLoginValidate(userName, userPwd))
行 23: {
行 24:
源文件: d:\wgm\vs\text\web\Login.aspx.cs 行: 22
堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
Leyp.SQLServerDAL.UserDAL.isExistsUserName(String UserName) in C:\Users\yuqin\Desktop\Leyipai\SQLServerDAL\UserDAL.cs:181
Leyp.SQLServerDAL.UserDAL.isLoginValidate(String UserName, String PassWord) in C:\Users\yuqin\Desktop\Leyipai\SQLServerDAL\UserDAL.cs:207
Login.LoginButton_Click(Object sender, ImageClickEventArgs e) in d:\wgm\vs\text\web\Login.aspx.cs:22
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +115
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +120
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
#**_在这里分享一下我这问题的原因:是因为我的数据库表不全。希望能帮到后来人。_**#
你对象实例化了么?创建对象了么?
可能是值得问题,断点调试下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<link rel="stylesheet" type="text/css" href="css/Login.css"/>
<SCRIPT src="js/jquery.js" type=text/javascript></SCRIPT>
<SCRIPT src="js/jquery-cookieplug.js" type=text/javascript></SCRIPT>
TABLE {<br> FONT-SIZE: 12px; COLOR: #333333; LINE-HEIGHT: 150%; FONT-FAMILY: "宋体"<br> }<br> BODY {<br> MARGIN: 0px<br> }<br>
</form>
我是在看别人提供的代码,在仿写练习时碰到这个问题,说实话,我都不知道应该怎么问
aspx页代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<link rel="stylesheet" type="text/css" href="css/Login.css"/>
<SCRIPT src="js/jquery.js" type=text/javascript></SCRIPT>
<SCRIPT src="js/jquery-cookieplug.js" type=text/javascript></SCRIPT>
TABLE {<br> FONT-SIZE: 12px; COLOR: #333333; LINE-HEIGHT: 150%; FONT-FAMILY: "宋体"<br> }<br> BODY {<br> MARGIN: 0px<br> }<br>
</form>
我都是仿它的,在它的原程序里,可以运行,换我自己这样一页一页抄过来,就不行
调试,一行一行的检查,看什么对象为null了。如果对象为null在它的实例上调方法或者访问属性都会引发空指针异常..
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>系统登陆</title>
<link rel="stylesheet" type="text/css" href="css/Login.css"/>
<SCRIPT src="js/jquery.js" type=text/javascript></SCRIPT>
<SCRIPT src="js/jquery-cookieplug.js" type=text/javascript></SCRIPT>
<STYLE type=text/css>TABLE {
FONT-SIZE: 12px; COLOR: #333333; LINE-HEIGHT: 150%; FONT-FAMILY: "宋体"
}
BODY {
MARGIN: 0px
}
</STYLE>
</head>
<body leftMargin=0 background=images/bg.gif topMargin=0>
<form id="form1" runat="server">
<DIV align=center>
<!--5-1-A-s-p-X--->
<TABLE cellSpacing=0 cellPadding=0 width=913 border=0>
<TBODY>
<TR>
<TD width=461 style="height: 465px" valign="top">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=left><IMG height=80 src="images/log_mykd_n.gif"
width=212></DIV></TD></TR>
<TR>
<TD><IMG height=110 src="images/ren1_n.gif"
width=461></TD></TR>
<TR>
<TD><IMG height=230 src="images/ren2.jpg"
width=461></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top style="height: 465px">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=bottom height=190><IMG height=32
src="images/pic_text.gif" width=381></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top background=images/con1.gif>
<TABLE style="MARGIN-TOP: 37px; MARGIN-LEFT: 8px" cellSpacing=0
cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=34 src="images/pic_text_login.gif"
width=253></TD></TR>
<TR>
<TD>
<TABLE style="MARGIN-TOP: 10px; width: 379px;" cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD noWrap style="width: 38px">
用户:</TD>
<TD style="width: 155px"><LABEL>
<asp:TextBox ID="UserName" runat="server" Width="101px">51aspx</asp:TextBox> <asp:RequiredFieldValidator
ID="RequiredFieldValidator1" runat="server" ControlToValidate="UserName" ErrorMessage='<img src="images/false.gif">'></asp:RequiredFieldValidator></LABEL></TD></TR>
<TR style="PADDING-TOP: 5px">
<TD style="width: 38px">
密码:</TD>
<TD style="width: 155px"><LABEL>
<asp:TextBox ID="PassWord" runat="server" Text="123" TextMode="Password" Width="101px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="PassWord"
ErrorMessage='<img src="images/false.gif">'></asp:RequiredFieldValidator></LABEL></TD></TR>
<TR style="PADDING-TOP: 5px">
<TD style="width: 38px"> </TD>
<TD style="width: 155px">
<TABLE cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD>
<DIV align=left>
<asp:ImageButton ID="LoginButton" runat="server" ImageUrl="images/but1.gif"
OnClick="LoginButton_Click" /></DIV></TD></TR>
<TR>
<TD>
<DIV align=left><IMG height=18
src="images/but1_y.gif"
width=83></DIV></TD></TR>
<TR>
<TD>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD width=22><IMG height=229 src="images/con2.gif"
width=22></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=913 align=center border=0>
<TBODY>
<TR>
<TD style="PADDING-BOTTOM: 10px" vAlign=bottom height=180>
</TD></TR></TBODY></TABLE>
</DIV>
</form>
</body>
</html>
using System;
using System.Web.UI;
using Leyp.Components;
using Leyp.Model.View;
using Leyp.SQLServerDAL;
using Leyp.Components.Module;
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void LoginButton_Click(object sender, ImageClickEventArgs e)
{
UserDAL bs = new UserDAL();
string userName = StrHelper.ConvertSql(UserName.Text.ToString());
string userPwd = StrHelper.EncryptPassword(PassWord.Text.ToString(), StrHelper.PasswordType.MD5);
if(bs.isLoginValidate (userName,userPwd))
{
Leyp.Model.User s=bs.getByUserName(userName);
SessionUser ss = new SessionUser();
ss.UserName = s.UserName;
ss.TypeID = s.TypeID;
ss.SubClassID = s.SubClassID;
ss.GroupID = s.GroupID;
Leyp.Components.Module.BaseLogin.SetSession(ss);//保存Session
new BasePage().addSystemLog("登录进入系统");
Response.Redirect("Index.aspx");
}
else{
Jscript.AjaxAlert(this,"登录失败!请检查用户名和密码");
return ;
}
}
}
看bs是否有isLoginValidate的方法和userName和userPwd的值
Leyp.SQLServerDAL.UserDAL.isExistsUserName(String UserName) in C:\Users\yuqin\Desktop\Leyipai\SQLServerDAL\UserDAL.cs:181
这个代码贴出来,181行,肯定是使用了null值的变量,如存储null的变量调用ToString之类的方法
各位前辈,这个问题我自己已经解决。查找出来的原因让我羞愧,是数据库问题。因为我是在学习C#,所以对原程序进行仿写,同时也仿写他的数据库
仿写数据库是,只是把我自认为这页面会用到的数据库表仿写过来,结果因为数据库没仿写完全,引用这个问题。
谢谢各位的帮助!