2012-02-17 46 views
2

我需要创建并返回用户会话是否已过期的操作。问题是请求任何操作都会刷新用户的会话超时。所以,我需要这个动作来不刷新超时。MVC3:不刷新会话的控制器操作

有没有办法让控制器操作有权访问会话,但不刷新超时?

+0

只是一个未经测试的想法,用[SessionState(SessionStateBehavior.Disabled)]装饰的控制器刷新会话的超时?如果没有,也许你可以创建另一个控制器来执行检查。 – 2012-02-17 20:17:49

+0

看起来他们没有。但是,Session是空的,这意味着我无法检查会话是否仍然活动。那是除非我失去了一些东西。 – mtmurdock 2012-02-17 21:15:14

+0

不知道你的上下文......你可以发送会话过期的时间与每个请求,而不是击中动作,只是检查客户端的时间?不太准确,但如果您找不到更好的解决方案,可能会出现这种情况。 – Rophuine 2012-02-17 21:20:00

回答

1

想通了。我们建立了一个http模块来读取可以在site.com/.formsauthticket访问的表单认证票。通过在这个级别处理它,它根本没有触发会话。恐怕我不能在这里提供代码,但我们设置模块返回毫秒数,直到会话过期。然后我们使用这个数字来制作一些客户端定时器。

我们根据我们的解决方案对发现的不同问题的答案here。希望这可以帮助别人!