【问题标题】:session expired error in asp.net MVC 3asp.net MVC 3中的会话过期错误
【发布时间】:2011-11-02 18:45:38
【问题描述】:

我正在开发 asp.net MVC 3 应用程序。我面临与会话到期有关的问题。当我登录并且网站在 10-15 分钟内处于非活动状态时,我尝试单击任何链接,它显示对象引用空错误。我希望当会话过期时,单击任何链接时,我应该被重定向到登录页面并显示会话过期的错误消息,或者弹出相同的消息。如何在 asp.net MVC 3 中实现它。

问候, 阿西夫·哈米德

【问题讨论】:

  • 您是如何处理身份验证、FormsAuthentication 或自定义的?
  • 堆栈跟踪和示例代码会很有帮助。

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

我猜你的代码从会话状态中抓取了一些东西然后使用它而不首先检查它是否为空。

我建议查看该代码并添加空检查。如果为null,则根据需要重定向到登录页面。

【讨论】:

  • >> 它说对象引用空错误。它是什么?调试代码,我怀疑 n8wrl 是正确的。还要查看 BNL 的响应并正确设置会话/身份验证超时。我会将它们降低到 1.2 分钟,看看您是否可以更快地重现问题,然后了解问题,然后修复它。
【解决方案2】:

在 .net 网络应用程序中通常会出现两次超时。

首先是会话超时。它在 sessionState 标签中设置。

<sessionState timeout="number of minutes" ...></sessionState>

第二个是表单cookie超时。它是在身份验证标签中设置的。

<authentication mode="Forms">
      <forms timeout="number of minutes"/>
</authentication>

您的会话似乎在您的表单 cookie 超时之前超时。

最好让您的会话持续时间比表单身份验证 cookie 长几分钟,这样用户可以在几分钟内重新登录并且仍然有他们的会话。我遇到了问题,例如您描述的问题,将它们设置为相同的值。

【讨论】:

    猜你喜欢
    • 2015-01-14
    • 2014-06-25
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多