C# 如何比较会话的值?asp.net

C# 如何比较会话的值?asp.net,c#,asp.net,C#,Asp.net,我找不到如何比较会话值的方法 查询数据库: 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);

我找不到如何比较会话值的方法

查询数据库:

 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方法应该将什么类型的用户与别名字段进行比较,下面是我使用的选项

1. 2. 3. 4. 有什么建议吗?我需要知道什么样的用户登录后才能继续。 如果SqlDataReader r=comando.ExecuteReader,则表示感谢;不返回任何行。您未将任何内容设置为会话,因此无法读取任何内容 我会选择这样的方式:

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";
}

看起来可能忽略了一个简单的错误:字符串comparison区分大小写,除非您另外指定

也许你在比较单数和复数医生和医生

第三,配置文件中的密钥也将区分大小写。因此,AliasUsuario与AliasUsuario不同。

来源:

返回值 类型:System.Boolean 如果有更多行,则为true;否则就错了

现在,如果您的命令返回多行,则可能会设置预期之外的值。这是需要注意的

从您的注释来看,您可能试图在设置会话变量之前读取它

此外,很可能值医生已使用空白字符\r\n、\r\n滑入数据库,这些字符在SQL Server management studio等数据库工具中通常不可见。要检查是否存在这种情况,您可以使用以下内容:

if(Session["AliasUsuario"] != null)
{
    if (Session["AliasUsuario"].ToString().ToLower().Contains("doctors"))
    {
        // that's the case
    }
}

还可以尝试在一个while循环之后检查Session[AliasUsuario]的值。一个简单的断点就可以做到这一点。

不工作有点模糊,您是否遇到了错误?会话变量是否设置为偶数?您是否处于IHttpHandler上下文中?当然设置为偶数?是否返回任何错误?您是否检查了会话[用户]是否为空?试试这个:Doctors.equalStringSession[user]@EinerSantanaR那么也许你可以分享一下错误是什么?!它确实返回行,我可以在标签中发布,这意味着它设置的会话。Aliasusuario键在哪里,我看不到它?我的意思是,确保在通过代码或设置文件设置配置键以及读取值时检查拼写是否完全相同。我已经复制并粘贴了完全相同的键一整天,但我仍然不知道为什么它不比较会话的值
if(Convert.ToString(Session["AliasUsuario"]).Equals("Doctors"))
{
//not working
}
if(Session["AliasUsuario"].ToString().Equals("Doctors"))
{
//not working
}
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";
}
if(Session["AliasUsuario"] != null)
{
    if (Session["AliasUsuario"].ToString().ToLower().Contains("doctors"))
    {
        // that's the case
    }
}