您好我需要保留一组文档的状态而不将其存储在数据库中。
我在考虑将文档存储在文件系统和会话内部的fileName和GUID,以及会话到期时能否删除文档。
问题在于我不知道如何确定会话是否过期。
我知道如果我有这样的东西:var session = Session [“item”]如果会话中没有任何项目,它将返回null。
但是,如果用户例如关闭浏览器,我该如何处理。在执行此操作时,没有对服务器进行调用。
在这种情况下,我应该删除文件系统上的文件。
无论如何要实现这个目标吗?
答案 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)