2008-09-05 244 views
0

我在浏览器中遇到的复杂任务中遇到的问题之一是自动超时。自动超时Web客户端使用

目前我们的网站有30分钟的过期期限。通常,这不是问题,因为我们使用asp.net,大多数时候用户更新一个或两个字段,然后提交表单。这显然会使会话保持活动状态。我一直在努力处理这个问题,它需要更复杂的表单/用户交互,如果没有到服务器的往返旅程,很少。

现在,用户可以查看报告,在我们的网站上输入电子邮件等,我正在努力如何在他们实际使用浏览器时保持其会话活跃,但他们不主动发回信息。我会放弃滑动到期,但这是一个要求,所以我坚持下去。我们大部分的用户都在组织之外,所以我不能使用任何形式的SSO

有没有人有一个优雅的解决方案(我甚至会去一个丑陋的,如果它的作品),或者我运气不好?

回答

2

我们最近在我的组织中经历了这个。尽管这不是最好的解决方案,并且在多个浏览器窗口之间进行正确的会话非常困难,但我们在页面上放置了一个倒数计时器,其中包含一个刚刚返回并按下服务器以重新启动会话的按钮,并且还向用户用JavaScript弹出窗口(解决方案的用户最喜欢的部分),并带有一条消息,说明会话距离超时五分钟,并点击“确定”按钮重新启动。然后,按钮将打到服务器重新启动会话,重新启动基本页面上的计时器,关闭弹出窗口,基本页面根本不需要刷新。

4

让浏览器定期通过Ajax ping服务器以保持会话的活跃。大多数网站在这个ping中做一些有用的事情,比如保存用户提交的草稿。

0

啊,这是一个古老的问题,因为内存使用率较高,不想增加会话时间。

一个答案是也设置一个cookie,过了一天之后就会告诉系统仍然记住用户。这就是eBay所做的,等等。

1

埃里克森是在正确的轨道上。

由于“复杂的表单/用户交互(如果没有到服务器的往返次数很少的情况下很容易发生会话超时)”的站点区域上,您可以放置​​一个keepalive控件来保持对服务器的ping操作,从而保持会话活着。

Here是一个示例控件,您可以使用该示例控件或将其用作编码自己的基础。