如何比较会话的值?asp.net
本文关键字:asp net 会话 何比较 比较 | 更新日期: 2023-09-27 18:03:09
我找不到如何比较会话值的方法。
查询数据库:
conexion.Open();
SqlCommand comando = new SqlCommand("SELECT id_cliente,alias,area FROM tbleuser WHERE usuario=@username AND pass=@thepassword",conexion);
comando.Parameters.AddWithValue("@username",user.Text);
comando.Parameters.AddWithValue("@thepassword", pas.Text);
SqlDataReader r = comando.ExecuteReader();
while(r.Read())
{
Session["UsuarioId"] = r["id_cliente"].ToString();
Session["AreaUsuario"] = r["area"].ToString();
Session["AliasUsuario"] = r["alias"].ToString();
checkUser();
}
checkUser方法应该与Alias字段比较用户的类型,下面是我使用的选项。
<标题> 1if(Session["AliasUsuario"].ToString() == "Doctors")
{
//not working
}
<标题> 2 h1> 3 if(Convert.ToString(Session["AliasUsuario"]).Equals("Doctors"))
{
//not working
}
<标题> 4 if(Session["AliasUsuario"].ToString().Equals("Doctors"))
{
//not working
}
有什么建议吗?在继续之前,我需要知道是什么样的用户登录。由于
标题>标题>标题>From MSDN:
返回值类型:系统。布尔
true如果有更多的行;否则假。
现在,如果您的命令返回多个行,则可能会设置与预期值不同的值。这是需要注意的。
从你的评论看来,你可能试图在它被设置之前读取会话变量。
也很有可能值Doctors
已经滑进数据库与空白字符('r
, 'n
, 'r'n
, space
),这往往是不可见的数据库工具,如SQL Server管理工作室。要检查是否存在这种情况,可以使用如下命令:
if(Session["AliasUsuario"] != null)
{
if (Session["AliasUsuario"].ToString().ToLower().Contains("doctors"))
{
// that's the case
}
}
也试着检查while
循环后Session["AliasUsuario"]
的值是什么。一个简单的断点就可以做到。
如果SqlDataReader r = comando.ExecuteReader();
没有返回任何行,则不设置session,因此无法读取任何内容
我会这样写:
if (r.HasRows)
{
while(r.Read())
{
Session["UsuarioId"] = r["id_cliente"].ToString();
Session["AreaUsuario"] = r["area"].ToString();
Session["AliasUsuario"] = r["alias"].ToString();
checkUser();
}
}
else
{
Session["UsuarioId"] = "none";
Session["AreaUsuario"] = "none";
Session["AliasUsuario"] = "none";
}
看起来可能忽略了一个简单的错误:字符串比较是区分大小写的(除非您另有指定)。
也许你在比较单数和复数(Doctor
vs Doctors
)?
第三,配置文件中的键也将区分大小写。所以AliasUsuario
和Aliasusuario
是不一样的