嗨,我对 asp.net SESSIONS 的工作方式不是很熟悉,但经过阅读后,我发现它可以帮助我解决一个我不费吹灰之力的问题。
我的问题与允许用户在服务器上上传一些文档但实际上在他按下发布按钮之前将它们保存在数据库中的情况有关。
如果他上传文件并关闭浏览器,文件仍保留在文件系统中,并且无法知道那里保存了哪些文件。
为了解决这个问题,我决定将文档的详细信息存储在会话中,而不是保存在文件系统中的实际文档。
当页面第一次加载时,会根据会话中存储的数据执行文件系统的清理。
现在唯一剩下的就是能够处理用户关闭浏览器和会话同时到期的情况。
经过一番研究,我发现当会话过期时,即使浏览器关闭 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 分钟,它似乎在我尝试过的所有情况下都有效。
谁能确认这是否是解决我的问题的可靠方法?
有什么我想念的吗?