会话过期时删除文档

时间:2013-10-08 05:48:30

标签: c# asp.net webforms

您好我需要保留一组文档的状态而不将其存储在数据库中。

我在考虑将文档存储在文件系统和会话内部的fileName和GUID,以及会话到期时能否删除文档。

问题在于我不知道如何确定会话是否过期。

我知道如果我有这样的东西:var session = Session [“item”]如果会话中没有任何项目,它将返回null。

但是,如果用户例如关闭浏览器,我该如何处理。在执行此操作时,没有对服务器进行调用。

在这种情况下,我应该删除文件系统上的文件。

无论如何要实现这个目标吗?

3 个答案:

答案 0 :(得分:1)

使用Session_End

中的Global.asax事件

此处提供更多信息:http://msdn.microsoft.com/en-us/library/ms178583.aspx

如果您的会话状态是OutProc,您可能还需要阅读:http://blogs.msdn.com/b/amb/archive/2011/06/03/session-onend-or-session-end-won-t-fire-if-you-store-asp-net-sessions-out-of-proc.aspx

答案 1 :(得分:1)

可能的解决方案是使用jquery捕获这样的unload事件,同时将代码放在global.asax的Session_End中。

               $( window ).unload(function() {
                    //Write your logic to fire ajax call to delete the file                        
                 });

我遇到的另一个解决方法是,有一个JavaScript时间会ping到服务器,说用户仍然在Session中。在任何时候你都没有得到ping一段时间继续删除文件。这确实不是一个好的解决方案,但您可以使用Web套接字或长轮询逻辑来跟踪用户会话。

答案 2 :(得分:1)