Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在会话结束时从服务器删除临时文件_Asp.net_Vb.net_Global Asax - Fatal编程技术网

Asp.net 在会话结束时从服务器删除临时文件

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,但我认为我无法访问任何变量来获取临时图像的路径 如何在会话结束或类

在我的应用程序中,我根据用户选择的选项修改图像。每次修改默认图像时,我都将其保存并命名为用户ID&
date.now.tostring(“yyyyMMddHHmmssf”)
,以解决浏览器缓存问题。这很好,但现在我可能会有很多老照片挂在周围

现在,如何从服务器上的
~/images/Temp/userID
文件夹中删除所有图像?我正在考虑在
Global.asax
中使用
Session\u End
Application\u End
subs,但我认为我无法访问任何变量来获取临时图像的路径


如何在会话结束或类似操作后删除这些临时文件?

会话结束仅对进程内会话触发,并且不能保证这一点(例如,服务器可能会断电而不会触发)。应用程序端不应该经常启动,而且(正如您指出的)您可能没有执行清理所需的数据

在会话结束时执行清理工作并不坏,但对于这个特定问题,可能有更好、更确定的解决方案

如果唯一命名是问题的根源,则会想到以下几个选项:

  • 使用命名约定,该约定允许您定期运行Windows任务以识别旧图像并清理它们。Powershell对于此类任务非常灵活

  • 为图像提供名称末尾的可变查询字符串参数,以避免缓存(但保持文件名一致)

    示例:

  • 通过处理程序动态地提供图像。这允许您控制缓存设置、更改查询字符串等

  • 为映像提供自定义扩展名,并在IIS中为该扩展名设置不同的缓存设置。只要图像标记是有效的,web浏览器就不会有指向自定义扩展名的图像标记问题


查询字符串参数是最简单的…基本上,只要文件有一个名称,并在更新时覆盖它即可。然后,当您设置图像的源时(如果需要,在代码隐藏中),将查询字符串附加到图像名称。它可以是任意随机值…其目的是欺骗web浏览器再次下载图像,从而确保您永远不会看到图像的旧缓存版本。这就像一个4个答案。。。1) 我试图避免让另一个程序或任务清理旧文件。2,3,4)由于我还不熟悉网络开发,我必须仔细阅读如何使用这些建议。如果这有什么不同的话,我会通过VS2010中的代码来做所有的事情。这可能不是正确的方法,但我更像是一名Windows.NET程序员,而不是ASP/web开发人员。查询字符串起到了作用。现在,每个用户(