C#.net webform,避免从会话超时中丢失数据

时间:2010-10-07 18:16:52

标签: c# session webforms forms-authentication session-state

我的用户抱怨我的Intranet网页经常超时。在寻找解决方案时,我发现了这篇文章:

http://forums.asp.net/t/152925.aspx?PageIndex=1

如果海报建议拦截重定向到登录页面,请将数据提交到数据库,然后重新授权用户(不知情)或重定向到登录页面。我的目标是避免用户在表单中输入数据,离开,然后返回提交,只是被告知他们必须再次登录的情况(如果数据保留且用户被正确发送,这很好)回到原来的网络形式)。

有谁知道如何在我的应用程序中的特定页面上完成此操作(不是全部)?

3 个答案:

答案 0 :(得分:5)

这不一定是微不足道的,但您可以添加一个ajax组件,该组件偶尔会调用页面以保持会话处于活动状态。这样,您可以延长所需的任何特定页面的会话,而不会影响整个应用程序。

修改

如果你真的想让会话过期,但保留表单数据,你可以实现

protected void Application_PostAuthenticateRequest (object sender, EventArgs e)
global.asax.cs文件中的

事件处理程序。这是在表单身份验证重定向发生之前调用的,此时表单数据可供您的应用程序使用,因此您可以将其保留到任何必要的介质,直到您的用户再次进行身份验证。另外,如果你检查

((HttpApplication)sender).Request.Path

属性会告诉您请求了哪个页面。

答案 1 :(得分:0)

好吧,它可以轻松地延长web.config文件中指定的超时时间。

答案 2 :(得分:0)

我将尝试使用cookie来保存数据。我的计划是在每个控件更改后更新用户的cookie,然后在页面的page_load属性中添加逻辑,以便在用户重新登录后填充表单数据。