在ASP.NET的会话结束时删除临时文件

本文关键字:删除 临时文件 结束 会话 ASP NET | 更新日期: 2023-09-27 18:07:00

我的网站在从pdf转换文档时创建了一堆png文件。我有唯一标识的所有这些文件,我希望它们在会话结束时被删除。我的想法是创建一个列表,将其存储在Session中,并按存储在我的列表<>中的路径删除每个文件。

在全球。

void Session_End(object sender, EventArgs e) 
{
    if (Session["cleanUpCollection"] != null)
    { 
        List<String> deletePaths = ((List<string>)(Session["cleanUpCollection"]));
        foreach(String s in deletePaths)
        {
            try
            {
                System.IO.File.Delete(s);
            }
            catch { }
        }
    }
}

web。config我添加了这个:

<sessionState mode="InProc" cookieless="false" timeout="20" />

但是文件仍然位于临时位置。我还没有测试这个失败的地方,但是有没有一个更好的,在会话结束时删除临时文件的常见做法?顺便说一句,我验证和cleanUpCollection存储本地服务器的路径,所以在文件路径中没有错误。

在ASP.NET的会话结束时删除临时文件

一种更可靠的方法是在服务器(站点之外)上运行一个计划作业,定期清理这个文件夹,删除超过一定年龄的文件。依赖会话超时是不理想的。

我也要注意到,你没有给我们任何指示是什么错误发生或为什么文件没有被删除。如需更多帮助,请提供一些信息。

将超时设置为20,这意味着在会话被放弃并执行代码之前需要20分钟。此外,Session_End事件不会触发,除非会话空闲,并且当有人导航到另一个页面或关闭浏览器时不会触发,因此该代码可能并不总是清理目录。

与其等待用户会话结束后再删除,我建议在创建PDF后立即删除文件。