我开发了一个 ASP.NET Web 应用程序。登录页面和注销功能正常工作。我添加了一个新方法来显示登录的用户名。添加此方法后,我无法登录到我的应用程序。我认为我没有正确添加此方法。
你能帮忙吗?
登录.aspx
protected void btnLogin_Click(object sender, EventArgs e)
{
try
{
DataTable dtUser = UserRegistration.GetUserByUserName(txtUserName.Text, txtPassword.Text);
if (dtUser.Rows.Count > 0)
{
lblSuccessMessage.Text = "Login Successful!";
oLoginData = txtUserName.Text;
Session["intUserId"] = dtUser.Rows[0]["intUserId"].ToString();
Session["DisplayName"] = dtUser.Rows[0]["DisplayName"].ToString();
Response.Redirect("~/WebForms/Home/Home.aspx");
}
else
{
lblErrorMessage.Text = "Incorrect User Name or Password";
txtUserName.BackColor = System.Drawing.Color.LavenderBlush;
txtPassword.BackColor = System.Drawing.Color.LavenderBlush;
return;
}
}
catch
{
lblErrorMessage.Text = "Incorrect User Name or Password";
txtUserName.BackColor = System.Drawing.Color.LavenderBlush;
txtPassword.BackColor = System.Drawing.Color.LavenderBlush;
return;
}
}
}
Site.Masters.cs
protected void Page_Load(object sender, EventArgs e)
{
if ((Session["intUserId"] == null))
{
FormsAuthentication.SignOut();
Response.Redirect("~/Login.aspx");
}
else
{
//lblLocation.Text = Session["LocationName"].ToString();
lblUser.Text = "Logged User :" + Session["DisplayName"].ToString();
}
}
GetUserByUserName
public static DataTable GetUserByUserName(string UserName, string Password)
{
DataTable dsResult = new DataTable();
try
{
String strConnString = ConfigurationManager.ConnectionStrings["TCDMSConnection"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand com = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
con.Open();
com.Connection = con;
com.CommandType = CommandType.StoredProcedure;
com.CommandText = "spUserValidation";
SqlParameter[] sqlParam = new SqlParameter[2];
sqlParam[0] = new SqlParameter("@Username", UserName);
sqlParam[1] = new SqlParameter("@Password", Password);
if (sqlParam != null)
{
com.Parameters.AddRange(sqlParam);
}
da.SelectCommand = com;
da.Fill(dsResult);
con.Close();
return dsResult;
}
catch (Exception ex)
{
throw (ex);
}
}
}
最佳答案
如果您的登录页面 Login.aspx
正在使用相同的母版页 Site.Master
那么你似乎有一个重定向循环。
当您转到应用程序时,您会被重定向到 Login.aspx
因为您还没有登录。当Login.aspx
正在加载,这部分:
if ((Session["intUserId"] == null))
{
FormsAuthentication.SignOut();
Response.Redirect("~/Login.aspx");
}
母版页将执行并导致重定向回
Login.aspx
,这将导致整个事情重复。浏览器会注意到请求被多次重定向,最终会放弃并显示某种页面无法显示错误。
要修复它,如果当前正在运行的页面已经是
Login.aspx
,您需要避免重定向。 .例如像这样(在 Site.Master.cs 中):protected void Page_Load(object sender, EventArgs e)
{
if (!Request.CurrentExecutionFilePath.ToLower().EndsWith("login.aspx"))
{
if ((Session["intUserId"] == null))
{
FormsAuthentication.SignOut();
Response.Redirect("~/Login.aspx");
}
else
{
lblUser.Text = "Logged User :" + Session["DisplayName"].ToString();
}
}
}
关于asp.net - 未显示登录用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37436068/