我有一个使用InProc会话来存储登录用户ID的ASP.NET MVC2 Web应用程序。在控制器中,我使用自定义AuthorizeAttribute来检查Session中的有效ID。

在GET-> POST-> REDIRECT之后,我也在控制器内使用TempData显示确认消息。例如,当用户注销时,我的Logout()控制器操作将清除会话,设置TempData [“ Message”]并重定向到Login()操作。然后Login()操作将显示任何不为null的TempData [“ Message”]。

TempData["Message"] = "You have successfully logged out.";


我的问题(最后)如下。如果会话超时,我希望能够将用户重定向到Login()操作,而不是用户注销。

TempData["Message"] = "You have been logged out due to inactivity.";


我不确定1)在这种情况下使用TempData集合是否合适,或者2)在适当的位置处理该问题是否合适。

我想尽可能地保持在MVC准则/最佳实践之内,所以看来以某种丑陋的方式使用Session_End并不是我想要的方式。我也想避免在查询字符串中传入?timeout = true。

有什么想法吗?

最佳答案

会话到期时,您无法在服务器上执行任何操作,因为浏览器一直未连接到服务器。

我会创建一个JavaScript函数,该函数会在您的会话期到期后不久刷新页面。

关于asp.net-mvc-2 - ASP.NET MVC session 超时和TempData,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3719086/

10-12 17:16