我正在开发的一个网站是以数据为中心的.有些报告需要一个多小时才能完成.每当用户提交报告请求时,都会创建一个生成报告的新线程.然后将用户重定向到一个表示报告正在进行的页面,并请刷新下载报告.如果用户再次刷新页面并且报告仍在进行中,则显示相同的消息;否则提供下载链接.
所有报告/用户关系都保存在应用程序变量中.这样做很好,除非当用户不活动超过20分钟(正在处理报告时),然后用户注销;如果用户再次登录,则仍可以下载该报告.
我不想增加会话过期时间,但如果用户在后台执行某些操作,就像正在处理的报表一样,我需要停止该过期.
在Session_End中,我可以在Application [“work”]中检索该用户标识符并将其匹配,以查看该用户是否有待处理的工作.
但是,在上述情况下,我如何推迟会话结束,我无能为力?
编辑:每个人都建议作为“维护联系人”到“使用查询字符串”的解决方法. “维持联系”对我来说最有希望,但在以下情况下失败:a.午餐时关闭/计算浏览器进入待机状态等.当用户转到另一个nonasp.net部分(它是一个旧站点).
是不是可以取消Session_End事件本身?
解决方法
Maintain a contact with the server will avoid Session Timeout.
创建一个空的Web服务并在您的服务器中运行,然后通过JQuery通过JQuery调用Web服务,间隔几秒就足以保持会话活动
可能这个解决方案会帮你
尝试此链接的详细信息:Prevent Session Timeout in ASP.NET