我有一个托管的Silverlight 4应用程序。我的任务是在他的ASP.NET会话即将到期时通过一个简单的对话框通知Silverlight用户,说“你的会话即将到期,你想重置会话吗?”有两个按钮[是]和[否]。当用户单击[是]时,我想更新ASP.NET会话,否则我只是让它过期。在这里使用的最佳方法是什么?
我已经看过不同的论坛了,大多数人只是简单地从托管Silverlight应用程序的页面中经常轮询服务器。这不适合我。我想创建一个单独的DispatcherTimer,它将在Silverlight应用程序启动时启动,将使用WCF从服务器获取Session.Timeout值,并运行(Session.Timeout - 一些delta)分钟。当计时器到期时,它会弹出通知窗口。此外,由于此通知窗口应仅在一段时间不活动后弹出,我想在每次执行WCF调用时重置此计时器(这实质上定义了活动)。这听起来不错?有没有更好的方法?你有什么想法?
P.S。我还计划为Forms timeout执行类似的操作。
答案 0 :(得分:0)
您可能会也可能不会反对这一点,但我发现在RIA中运行时会对ASP.NET服务器发出保持活动请求,以防止会话过期,这对RIA很有用。申请是活跃的。同时,如果服务器上发生导致会话过期的情况,您可以在keepalive处理中检测到该情况并告诉客户端已经过期。