在哪里定义删除超过7天的文件的脚本



我需要编写脚本,删除MVC . net应用程序中超过7天的文件。我将使用以下代码

   List<string> DeletePath = new List<string>();
        DirectoryInfo info = new DirectoryInfo(Server.MapPath("~\TempFiles"));
        FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
        foreach (FileInfo file in files)
        {
            DateTime CreationTime = file.CreationTime;
            double days = (DateTime.Now - CreationTime).TotalDays;
            if (days > 7)
            {
                string delFullPath = file.DirectoryName + "\" + file.Name;
                DeletePath.Add(delFullPath);
            }
        }
        foreach (var f in DeletePath)
        {
            if (File.Exists(F))
            {
                File.Delete(F);
            }
        }

但是我不知道在哪里定义这个和如何调用。我需要创建新的控制器或类似的东西吗?

用静态方法包装代码并使用hangfire

http://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html

RecurringJob.AddOrUpdate(() => myCleanup.CleanupOldFiles(), Cron.Hourly)

你需要创建一个在服务器后台运行的window service。窗口服务是正常的应用程序,它自动运行,不需要任何用户事件。创建一个窗口服务,然后您可以在timer tick event中编写相同的代码。在这里,您可以设置执行此代码的时间。

通常window service一旦部署,就会开始每秒执行你的代码。所以你需要设定好时间。有了Timer,你可以按照你的需求执行你的代码,每天在特定的时间,一周一次,一个月一次等等。

在这里阅读更多关于窗口服务的信息…

Mvc不是这个工作。这就像问如何在火车上安装轮胎,使它能在私人街道上行驶。

为了让Mvc或任何web应用程序做一些事情,请求必须来自客户端。如果没有请求进入,IIS什么也不做,只是"监听"进入的连接。要以"正确"的方式执行此操作,您有两个选项:

  1. 创建一个批处理文件或Powershell脚本,甚至是一个c#控制台应用程序来删除这些文件,然后设置该批处理文件或脚本或程序在Windows任务调度程序中运行。

  2. 如果你需要更多的逻辑来决定何时应该删除文件,或者你需要自定义时间表,那么你应该创建一个Windows服务应用程序。你可以用c#来实现它,你可以让它做任何你想做的事情,只要它不需要GUI。如果你确实需要一个GUI来配置服务,那么你可以制作一个单独的WinForms或WPF应用程序来配置服务。有几种方法可以实现GUI/Service通信。其中比较流行的是WCF通信、数据库配置甚至INI文件。

希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新