【问题标题】:Asp.net session expiring automatically after few seconds in MVC在 MVC 中几秒钟后,Asp.net 会话自动过期
【发布时间】:2017-06-13 08:01:43
【问题描述】:

当用户登录时,我将 user_id 存储在 Session 变量中,并且在第二页上,我正在检查页面加载,如果 user_id 存在则很好,否则重定向到登录页面,但是当我登录并在几次之后重定向到下一页秒它将重定向到登录页面。我已经尝试了所有解决方案,但都是徒劳的

重要提示: 另一件事是应用程序在开发服务器和局域网中的本地 IIS 上运行良好,但在实时服务器上,这个问题正在发生。 下面的 web.config 文件代码是

 <system.web>
  <customErrors mode="Off" />
  <trust level="Full" />
  <authentication mode="Forms">
   <forms loginUrl="~/Security/Registration" timeout="30" 
         slidingExpiration="true"  />
  </authentication>
  <sessionState timeout="30"></sessionState>
  <compilation targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" />
 </system.web>

【问题讨论】:

  • 你在mvc中使用表单认证?为什么不尝试使用身份呢?
  • 向我们展示您如何设置变量、如何获取和比较它以及它到底在哪里失败。
  • 我最好的猜测是您的 cookie/会话计时器未设置,或者您已设置了几秒钟。
  • 我正在设置像这样的值`Session["User"] = obj.ID;会话[“用户名”] = obj.FullName; FormsAuthentication.SetAuthCookie(obj.Email, false);

标签: c# asp.net-mvc entity-framework authentication


【解决方案1】:

你为什么不更新sessionState下面一行:

<sessionState mode="InProc" cookieless="false" timeout="30" />

【讨论】:

  • Nikunj Patel 在我的本地开发机器上仍然存在同样的错误,它运行良好,但是当我在服务器上运行我的项目时,当实时服务器出现问题时,它创建的问题会话值会在几秒钟后过期。我正在使用共享主机。
  • @BedSpace,就一切看起来还不错。在这种情况下,您可以向托管服务提供商寻求支持,他们的托管配置可能会导致此问题!他们可能会帮助你!
  • 是的,我问托管团队,他们对我说您的网站资源匮乏,这给我带来了问题。
  • @BedSpace,减少资源消耗对您来说是一个很好的挑战!您应该查看IDisposable 来管理GarbageCollector
【解决方案2】:

你可以在 web.config 中设置超时时间

<system.web>
    <sessionState mode="InProc" cookieless="false" timeout="30" />
     ....

【讨论】:

  • 在我的本地开发机器上仍然存在同样的错误,它运行良好,但是当我在服务器上运行我的项目时,当实时服务器出现问题时,它创建的问题会话值会在几秒钟后过期。我正在使用共享主机。跨度>
猜你喜欢
  • 2013-01-06
  • 1970-01-01
  • 2015-05-16
  • 2011-01-29
  • 2014-10-24
  • 2016-10-31
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多