在 Silverlight 中检测会话超时

Posted

技术标签:

【中文标题】在 Silverlight 中检测会话超时【英文标题】:Detecting Session Timeout in Silverlight 【发布时间】:2011-07-27 08:34:59 【问题描述】:

SL3 DataGrid 有一个下载 XLS 列,用于以 Excel 格式下载记录的详细信息。单击“下载”按钮时,首先会提示用户使用 SaveFileDialog 选择文件,然后进行 WCF 调用以获取所选记录的详细信息。使用第 3 方 Excel 助手库,将记录添加到 Excel 工作表并保存文件。

问题是,当 Session 超时时(比如因为空闲),点击功能非常好,提示用户指定要保存的文件,然后重定向到登录页面(如预期的那样) ,因为我们正在处理 not authenticated 错误等)。

但是,用户现在会产生一种错觉,以为下载了一个空的 Excel 文件。

那么,有没有办法从 Silverlight 页面检测会话是否超时? 从而仅在 Session 可用时才显示 SaveFileDialog。

【问题讨论】:

【参考方案1】:

您可能可以将检测信号从 Silverlight 发送到 ASP.NET。这也是 Ajax 世界中非常常见的问题。由于您也可以在 Silverlight 中使用 javascript,因此您可能需要查看此解决方案 Keeping ASP.NET Session Open / Alive

如果你不喜欢 JS,那么你可以使用 HttpWebRequest 或 WebClient 与 asp.net 进行通信 ...

【讨论】:

嗨,迈克尔,感谢您的回复。我的目的不是让会话保持活动状态,而是确保当会话不再存在时我不会弹出 SaveFileDialog,因为它无论如何都会重定向到登录页面(预期)。想知道是否有任何方法可以知道单击按钮时会话是活动的还是已过期?

以上是关于在 Silverlight 中检测会话超时的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight 模板选择器解决方案效果很好,但不能混合

Laravel 身份验证会话超时

Silverlight WCF 超时

Silverlight 全局鼠标按下事件处理程序

12-思科防火墙:ASA会话超时

我可以使用 Silverlight 中的 Microsoft.Office.Interop.Word .dll 来操作 MSWord 的 SaveDialogFile 吗?