在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存储本地服务器的路径,所以在文件路径中没有错误。
一种更可靠的方法是在服务器(站点之外)上运行一个计划作业,定期清理这个文件夹,删除超过一定年龄的文件。依赖会话超时是不理想的。
我也要注意到,你没有给我们任何指示是什么错误发生或为什么文件没有被删除。如需更多帮助,请提供一些信息。
将超时设置为20,这意味着在会话被放弃并执行代码之前需要20分钟。此外,Session_End事件不会触发,除非会话空闲,并且当有人导航到另一个页面或关闭浏览器时不会触发,因此该代码可能并不总是清理目录。
与其等待用户会话结束后再删除,我建议在创建PDF后立即删除文件。