2013-06-24 20 views
0

我创建了一个ASP.NET Web表单网站。关于定期删除垃圾文件(如附件)的想法

该网站允许用户撰写文章并上传附件。

当用户写文章,任何上传的附件移入temp folder,我在我的站点文件夹中创建,只是当用户提交的文章,附件被移动到适当的路径,

但是,如果用户关闭了表单并丢弃了文章呢?临时文件夹中的文件是永久性的吗?当然不是!

SO

我想确定定期删除临时文件,而不会删除那些正在申请中的任何文件,一个好的方案。

我在考虑一个场景:

  • 删除了为一个多小时创建的任何文件! (使用文件系统功能)并发生在Application_Start事件中或Session_end

有什么更好的想法?

回答

2

我会做它作为一个独立的Windows服务。

如果将该逻辑添加到Application_Start事件,如果您的站点不断被访问(并且永远不会被IIS回收),则只能运行该过程一次。您还有可能大大减缓第一位访问者对网站的初始预编译速度。

Session_end可能很好,但如果两个人同时结束,您可能会遇到竞争状况。

Windows服务为您提供始终运行的优点(如果正确写入,在等待时不使用CPU),并且不会影响ASP.NET网站的运行。

+0

但我认为将Windows服务添加到主机的Windows并不容易(在大多数情况下不合法)? –

+0

您不一定需要将该服务与Web服务器在同一个框上运行(尽管它会更容易)。只要Windows服务在可访问Web服务器的'temp folder'目录(您配置的那个,而不是C:\ Temp)的帐户下运行,它就可以从任何具有对该Web服务器的物理访问权限的服务器运行。 –

+0

啊哈,没关系,谢谢@GarrisonNeely –