2013-04-02 61 views
3

在我的ASP.NET MVC 3应用程序动作,我有执行控制器动作每一个时间周期的定时器。这样,我的会话永不超时......创建不影响会话超时

我不希望这种行动,每次执行时间重置会话计时器。我试图通过这样的链接

http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx

但这种方式创建一个自定义属性[AllowAnonymous]要做到这一点,任何用户都能够无需登录访问此行动,这不是我想要的。

任何想法?

回答

1

您可以禁用在你的web.config会议滑动过期:

<forms slidingExpiration="false" loginUrl="~/Account/LogOn" timeout="2800" /> 

这样的窗体身份验证cookie将不再更新和票据只会在固定时间内是有效的。

如果你想禁用仅适用于特定的请求滑动过期你可以看看的following answer。这有点不好意思,因为票据更新代码深埋在FormsAuthenticationModule中。

+0

确定但是这会影响所有操作,我只想为特定操作执行此操作 – kbaccouche

+0

这非常困难,因为票据更新深埋在FormsAuthenticationModule代码中。你可以看看下面的帖子:http://stackoverflow.com/a/4722128/29407 –

+0

@DarinDimitrov因此,这将通过设置'slidingExpiration'为false,并手动更新该cookie(使用你提供的链接)的工作除了针对特定操作的请求之外的所有请求? – ken2k

0

如何创建,通过一个子域访问不同的应用程序?我认为这不仅是最简单也是最干净的方式。

如果你使用任何其他方式和其他开发者需要稍后支持的话,这样做的成本可能会更高取决于解决方案的复杂性,如果他们需要以某种方式改变它。