Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET应用程序中,会话[“User”有时会丢失_C#_Asp.net_Session - Fatal编程技术网

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分钟后丢失。这不是问题。