Session_OnEnd行为

亚历山大

嗨,我对asp.net SESSIONS的工作方式不是很熟悉,但是经过一番阅读后,我发现它可以帮助我解决我不费劲的问题。

我的问题与一种情况有关,在这种情况下,允许用户在服务器上上载某些文档,但实际上没有将它们保存到数据库中,直到他按下发布按钮为止。

如果他上载文档并关闭浏览器,则文档将保留在文件系统中,并且无法知道在其中保存了哪些文档。

为了解决此问题,我决定将文档的详细信息存储在会话中,而不是存储在fileSystem中的实际文档。

当页面首次加载时,将基于会话中存储的数据执行fileSystem的清理。

现在剩下的唯一事情就是能够处理用户关闭浏览器并且会话在此期间到期的情况。

经过一些研究,我发现即使会话关闭,即使浏览器关闭,Session_OnEnd方法又是runes,因此我在这里添加了代码:

 public void Session_OnEnd()
 {
    var session = Session[Constants.FILE_SHARE_DOCUMENT];
    if (session != null)
    {
        var documents = (List<Document>)session;
        foreach (var document in documents)
        {
            string filePath = Path.Combine(Constants.SERVER_PATH, document.StorageFileName);
            File.Delete(filePath);
        }
    }
}

我还将会话的结束时间设置为1分钟,并且在我尝试过的所有情况下似乎都可以使用。

谁能确认这是否是解决我的问题的可靠方法?

有什么我想念的吗?

埃里克·冯肯布施(Erik Funkenbusch)

由于多种原因,这不是可靠的机制。

首先,将会话设置为1分钟?那不是很长。.您真的希望暂停一分钟的用户结束他们的会话吗?您的意思是您将其设置为1分钟以进行测试吗?通常,会话超时更像是20分钟。

其次,在工作进程被回收的情况下,Session_End将不会被调用。可能是,如果工作进程崩溃,设置为按计划回收或手动回收。

我只是让您的清理过程删除所有时间戳大于特定时间的文件。这很简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Session_OnEnd中获取用户

来自分类Dev

如何识别Session_OnEnd事件由于MVC应用程序中的应用程序结束而引发

来自分类Dev

如何制作行为类似于Session []集合的集合?C#

来自分类Dev

PHP会话:$ _SESSION在Mac上本地运行为空

来自分类Dev

ASP.NET MVC重定向OnEnd

来自分类Dev

`$ @`与`$ *`行为

来自分类Dev

PHP会话行为异常,当前对象出现在_session中

来自分类Dev

在请求之间进行测试时cherrypy.session 的奇怪行为

来自分类Dev

SpeechSynthesis API onend回调不起作用

来自分类Dev

ResponsiveVoice中的“ onend”并不意味着在播放文字之后?

来自分类Dev

视频开始播放时会调用react-native-video onEnd

来自分类Dev

预测行为的奇怪行为

来自分类Dev

进行Restful post调用时定义了带有“ require-session-token = true”和“ require-authentication =“ anonymous-all”属性的行为

来自分类Dev

包含的行为

来自分类Dev

FileChooserButton行为

来自分类Dev

Goroutines行为

来自分类Dev

前瞻行为

来自分类Dev

Realloc()行为

来自分类Dev

printf()的行为

来自分类Dev

匹配行为%in%

来自分类Dev

关闭行为

来自分类Dev

奇怪的行为

来自分类Dev

sortedArrayUsingComparator的行为

来自分类Dev

scanf()的行为

来自分类Dev

bash [[=]]行为

来自分类Dev

Nodetool行为

来自分类Dev

指针行为

来自分类Dev

KeSetSystemAffinityThread行为

来自分类Dev

奇怪的行为