C# 在ASP.NET应用程序中,会话[“User”有时会丢失
在我的登录页面中,用户输入他的用户名和密码。如果凭据有效,则我将此用户“保存”在会话变量中 在每页的C# 在ASP.NET应用程序中,会话[“User”有时会丢失,c#,asp.net,session,C#,Asp.net,Session,在我的登录页面中,用户输入他的用户名和密码。如果凭据有效,则我将此用户“保存”在会话变量中 在每页的page\u Load事件中,我都在检查他的权限。若保存的用户的会话为空,则应用程序会在登录页面上重定向该用户。在大多数情况下,user不为null,但有时在使用应用程序的过程中会丢失会话 My login.aspx.cs: protected void btn_logIn_Click(object sender, EventArgs e) { string username = t
page\u Load
事件中,我都在检查他的权限。若保存的用户的会话为空,则应用程序会在登录页面上重定向该用户。在大多数情况下,user不为null,但有时在使用应用程序的过程中会丢失会话
My login.aspx.cs:
protected void btn_logIn_Click(object sender, EventArgs e)
{
string username = txt_user.Text;
string pass= txt_pass.Text;
if (checkUser(username ,pass)==true)
{
User loggedIn=new User();
loggedIn=GetUser(username);
Session["user"]=loggedIn;
Response.Redirect("page.aspx",false);
}
}
protected void Page_Load(object sender, EventArgs e)
{
User loggedIn=(User)Session["user"];
if (loggedIn=!null)
{
Response.Redirect("Index.aspx",false);
}
}
protected void Page_Load(object sender, EventArgs e)
{
User loggedIn=(User)Session["user"];
if (loggedIn==null)
{
Response.Redirect("login.aspx",false);
}
else
{
//Checking his rights...
}
}
每隔一天。aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
User loggedIn=(User)Session["user"];
if (loggedIn==null)
{
Response.Redirect("login.aspx",false);
}
else
{
//Checking his rights...
}
}
Web.config
<sessionState mode="InProc" timeout="20"></sessionState>
顺便说一句在本地主机上,它工作得非常完美。在我发布应用程序后,就会发生这种情况
编辑:通过进一步测试,我看到了奇怪的结果。
例如,当我的用户返回到登录页面时,由于“他不在”会话中,在按F5(刷新页面)几次后,他可以返回到登录页面(请参见login.aspx.cs,原因是什么)
是什么导致了这个问题?看起来会话数据仍然在这里,但并不总是在这里,或者什么
谢谢。因为您已经设置了
sessionState mode="InProc" timeout="20"
在Web.config中,这意味着20分钟后该会话将无效
这是增强网站安全性的好方法。您的webconfig会话状态中有什么?请参阅编辑…这会影响所有、部分或仅一个用户吗?@MadMyche all..您是否向web.config或bin文件夹写入任何内容?这将导致重新启动webapp,清除所有会话(诊断:每个会话将同时消失)。在应用程序池回收后,这也没用。(
InProc
)会话有时会在1分钟后丢失。这不是问题。