加载文件到服务器,操作文件,然后在一段时间后删除它.net c#

本文关键字:文件 删除 net 一段时间 然后 服务器 操作 加载 | 更新日期: 2023-09-27 18:15:09

大家好,我已经给了任务创建一个web应用程序,将允许最终用户加载文件到我们的服务器之一。然后,服务器将操作该文件,然后将其返回给最终用户。服务器有IIS7和。net框架4这是我的问题。我已经把一切都弄清楚了,除了我很难从服务器上删除文件,一旦我操纵了。有没有一种方法,我可以把一个定时器说30分钟后有文件从服务器中删除在我的代码?还是有其他解决办法?我知道定时器的建议也许没有意义,但我不能想到另一种方法来做到这一点,所以我正在寻找一个意见或另一种方法。

加载文件到服务器,操作文件,然后在一段时间后删除它.net c#

计时器是一个很好的方法来安排未来的事情。如果用户再次请求该文件,您甚至可以重置计时器。只需要给timer一个委托,在timer触发时删除文件。

您是否能够在服务器上设置计划任务?

对于一个简单的控制台应用程序来说,这种事情是完美的,它只是删除那些修改日期/时间比现在更早的文件。addminutes(-10)。

如果你愿意,任务也可以每10分钟左右运行一次。

有时候最好让这类东西远离你的网站。让你的网站为你的用户服务,并创建一些其他的东西来服务你的服务器。:)

如果这是一个流量很大的网站,下次有人上传文件时,你可以简单地删除所有旧文件。所以:

用户选择要上传的文件,点击上传->你得到文件->你删除旧文件(不管它们属于谁)->您操作File ->文件将在下次用户上传时被删除…

为什么不在操作后删除它?或者不管最后一步是什么?那似乎是最好和最简单的方法。

根据容量的不同,为每个文件执行单个任务可能不是一个好主意,而应该将它们批处理到一个队列中,并让单个线程处理该队列。

例如,你可以在global中启动一个后台线程。asax(可能使用Timer)通过比较文件时间或其他东西来处理清理任务。

或者,作为该过程的第一步,您可以清除任何旧文件。不完全相同的东西,但可能足够接近。

或者,您可以滥用缓存删除回调作为定时器

如果你能确保应用程序一直在运行,你可以跳过计划任务,使用Quartz.NET。在这种情况下,即使它使用石英关闭也不会那么糟糕——除非有其他原因,当应用程序空闲时,一些旧文件挂在周围不会受到伤害。

在处理此问题时,我会以适当的方式(例如—您的数据库)存储文件列表,其中带有作业完成和已删除的标记。然后,您的石英任务可以抓取标记为已完成但未标记为已删除的文件并清理它们。在文件删除、更新和日志记录中使用事务的好处是,您可以知道当世界处于睡眠状态时发生了什么。