这个项目是前人留下的,webform的,之前在客户那边用了一年半也完全没问题,最近发现登录不上去。输入了账户名和密码,单击登录后报错。
下面这个是登录button<INPUT type="submit" id="Submit1" name="Submit1" value=" " runat="server" onserverclick="Submit1_ServerClick" style="border-style:none; background: url(images/登录.png); width: 66px; height: 26px; margin-top: 0px;">下面这个Submit1_ServerClickprotected void Submit1_ServerClick(object sender, System.EventArgs e)
{ if (!Page.IsValid) return; string sql = "exec spLogon @LogonName,@LogonPwd";
SqlParameter[] parameters ={
new SqlParameter("@LogonName", SqlDbType.NVarChar,15),
new SqlParameter("@LogonPwd", SqlDbType.NVarChar,20)};
parameters[0].Value = LogonID.Text.Trim();
parameters[1].Value = Password.Text;
SqlDataReader dr = null;
try
{
dr = DbHelperSQL.ExecuteReader(sql,parameters);
if (dr.Read())
{
int id=Convert.ToInt32(dr[0]);
TorionRole role = (TorionRole)Convert.ToInt32(dr[1]);
string realname = dr[2].ToString();
var user = new TorionUser(){ID=id,Role = role,RealName=realname};
Session["TorionHR:CurrentUser"] = user;
//write cookies to client
Response.Cookies["CookiesUser"].Value = Server.UrlEncode(LogonID.Text.Trim());
Response.Cookies["CookiesUser"].Expires = DateTime.Today.AddDays(1d);
FormsAuthentication.RedirectFromLoginPage("*", false);
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "faillogon", JScript.Alert("账号或密码不正确,请重新登录。"));
}
}
finally
{
dr.Close();
}
}
下面是错误信息
“/Cynthia”应用程序中的服务器错误。
________________________________________
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪: [NullReferenceException: 未将对象引用设置到对象的实例。]
Cynthia.WEB.Logon.Submit1_ServerClick(Object sender, EventArgs e) +672
System.Web.UI.HtmlControls.HtmlInputButton.OnServerClick(EventArgs e) +105
System.Web.UI.HtmlControls.HtmlInputButton.RaisePostBackEvent(String eventArgument) +106
System.Web.UI.HtmlControls.HtmlInputButton.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) +5087________________________________________
版本信息: Microsoft .NET Framework 版本:2.0.50727.1891; ASP.NET 版本:2.0.50727.1879这到底是错在什么地方了呢?? .net framework 版本问题??c# 登录
下面这个是登录button<INPUT type="submit" id="Submit1" name="Submit1" value=" " runat="server" onserverclick="Submit1_ServerClick" style="border-style:none; background: url(images/登录.png); width: 66px; height: 26px; margin-top: 0px;">下面这个Submit1_ServerClickprotected void Submit1_ServerClick(object sender, System.EventArgs e)
{ if (!Page.IsValid) return; string sql = "exec spLogon @LogonName,@LogonPwd";
SqlParameter[] parameters ={
new SqlParameter("@LogonName", SqlDbType.NVarChar,15),
new SqlParameter("@LogonPwd", SqlDbType.NVarChar,20)};
parameters[0].Value = LogonID.Text.Trim();
parameters[1].Value = Password.Text;
SqlDataReader dr = null;
try
{
dr = DbHelperSQL.ExecuteReader(sql,parameters);
if (dr.Read())
{
int id=Convert.ToInt32(dr[0]);
TorionRole role = (TorionRole)Convert.ToInt32(dr[1]);
string realname = dr[2].ToString();
var user = new TorionUser(){ID=id,Role = role,RealName=realname};
Session["TorionHR:CurrentUser"] = user;
//write cookies to client
Response.Cookies["CookiesUser"].Value = Server.UrlEncode(LogonID.Text.Trim());
Response.Cookies["CookiesUser"].Expires = DateTime.Today.AddDays(1d);
FormsAuthentication.RedirectFromLoginPage("*", false);
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "faillogon", JScript.Alert("账号或密码不正确,请重新登录。"));
}
}
finally
{
dr.Close();
}
}
下面是错误信息
“/Cynthia”应用程序中的服务器错误。
________________________________________
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪: [NullReferenceException: 未将对象引用设置到对象的实例。]
Cynthia.WEB.Logon.Submit1_ServerClick(Object sender, EventArgs e) +672
System.Web.UI.HtmlControls.HtmlInputButton.OnServerClick(EventArgs e) +105
System.Web.UI.HtmlControls.HtmlInputButton.RaisePostBackEvent(String eventArgument) +106
System.Web.UI.HtmlControls.HtmlInputButton.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) +5087________________________________________
版本信息: Microsoft .NET Framework 版本:2.0.50727.1891; ASP.NET 版本:2.0.50727.1879这到底是错在什么地方了呢?? .net framework 版本问题??c# 登录
dr = DbHelperSQL.ExecuteReader(sql,parameters);它可能返回的对象是null
也就是说,DbHelperSQL 对返回dr进行了封装,个人猜测可能进行了try 处理,所以返回的null问题可能是连接不到数据库,人为做360优化的时候,可能停止了数据库服务
1.看看能否正常登陆数据库
2.看看存储过程spLogon是否能正常运行。是否有人修改了这个存储过程
{
dr.Close();
}
2.加个catch捕获一下异常
//write cookies to client
Response.Cookies["CookiesUser"].Value = Server.UrlEncode(LogonID.Text.Trim());
Response.Cookies["CookiesUser"].Expires = DateTime.Today.AddDays(1d);
这里可能会出问题。加个判断
if( Request.Cookies["CookiesUser"]!==null)
{
//write cookies to client
Response.Cookies["CookiesUser"].Value = Server.UrlEncode(LogonID.Text.Trim());
Response.Cookies["CookiesUser"].Expires = DateTime.Today.AddDays(1d);
}
谢谢各位大大们~~~