为什么会话返回空
本文关键字:返回 会话 为什么 | 更新日期: 2023-09-27 18:35:24
我不能写入会话变量。
这是我的源代码:
public class CurrentUser
{
public static string UserName
{
get
{
if (HttpContext.Current.Session["UserName"] != null)
return (string)HttpContext.Current.Session["UserName"];
else
return null;
}
set
{
HttpContext.Current.Session["UserName"] = value;
}
}
}
我称这个类为写:
public class SQLGetData
{
public UserDC LogIn()
{
UserDC userDC = new UserDC();
CurrentUser.Id = 1;
CurrentUser.UserName = "Admin";
userDC.id = 1;
userDC.UserName = "Admin";
return userDC;
}
}
当我想调用(母版页.aspx):
Label1.Text = CurrentUser.Id + CurrentUser.UserName;
结果:CurrentUser.Id 为 1,CurrentUser.UserName 为 NULL。
为什么 CurrentUser.UserName 为 NULL?如何修改此公共字符串用户名写入?
从您共享的代码来看,不可能真正帮助您,因为我们只能尝试猜测正在发生的事情。
我假设您的 CurrentUser 类有一个 Id 属性,其代码与用户名相似。Id 属性按预期工作,但用户名不工作...这听起来真的很奇怪。
你能分享你的类的完整代码吗?或者至少是 Id 属性的代码?
然后,了解从何处调用 SQLGetData 类也会有所帮助。身份验证如何工作?
我对这种会话空场景的智慧是 - 您的应用程序中发生了隐藏的错误,但没有发现。 代码中的任何异常都会终止会话,并可能继续新会话,因此值为 null...
最好的方法是,在所有异常处理程序上运行 vs IDE 中的 vs IDE 中的 Debug --> 异常菜单,并在多个场景中运行应用程序,最终您会意识到从简单的错误(如 convertToInt 或类似的引用错误)开始存在隐藏的错误,这会导致会话变为 null...但是正如我猜测的那样,事情并没有在"错误"页面中出错,而是通过上面的"调试"找到,所有例外都是ON选项。
希望对您有所帮助!海德泰奇
您应该首先
使用HttpContext.Current.Session.Add("UserName", value)
在你的二传手里。
public class CurrentUser
{
public static string UserName
{
get
{
if (HttpContext.Current.Session["UserName"] != null)
return (string)HttpContext.Current.Session["UserName"];
else
return null;
}
set
{
if (HttpContext.Current.Session["UserName"] == null)
HttpContext.Current.Session.Add("UserName", value);
else
HttpContext.Current.Session["UserName"] = value;
}
}
}
这样做之后,它应该像你写的那样工作。