Asp.net 在会话结束时从服务器删除临时文件
在我的应用程序中,我根据用户选择的选项修改图像。每次修改默认图像时,我都将其保存并命名为用户ID&Asp.net 在会话结束时从服务器删除临时文件,asp.net,vb.net,global-asax,Asp.net,Vb.net,Global Asax,在我的应用程序中,我根据用户选择的选项修改图像。每次修改默认图像时,我都将其保存并命名为用户ID&date.now.tostring(“yyyyMMddHHmmssf”),以解决浏览器缓存问题。这很好,但现在我可能会有很多老照片挂在周围 现在,如何从服务器上的~/images/Temp/userID文件夹中删除所有图像?我正在考虑在Global.asax中使用Session\u End或Application\u Endsubs,但我认为我无法访问任何变量来获取临时图像的路径 如何在会话结束或类
date.now.tostring(“yyyyMMddHHmmssf”)
,以解决浏览器缓存问题。这很好,但现在我可能会有很多老照片挂在周围
现在,如何从服务器上的~/images/Temp/userID
文件夹中删除所有图像?我正在考虑在Global.asax
中使用Session\u End
或Application\u End
subs,但我认为我无法访问任何变量来获取临时图像的路径
如何在会话结束或类似操作后删除这些临时文件?会话结束仅对进程内会话触发,并且不能保证这一点(例如,服务器可能会断电而不会触发)。应用程序端不应该经常启动,而且(正如您指出的)您可能没有执行清理所需的数据 在会话结束时执行清理工作并不坏,但对于这个特定问题,可能有更好、更确定的解决方案 如果唯一命名是问题的根源,则会想到以下几个选项:
- 使用命名约定,该约定允许您定期运行Windows任务以识别旧图像并清理它们。Powershell对于此类任务非常灵活
- 为图像提供名称末尾的可变查询字符串参数,以避免缓存(但保持文件名一致)
示例:
- 通过处理程序动态地提供图像。这允许您控制缓存设置、更改查询字符串等
- 为映像提供自定义扩展名,并在IIS中为该扩展名设置不同的缓存设置。只要图像标记是有效的,web浏览器就不会有指向自定义扩展名的图像标记问题