我需要编写脚本,删除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.htmlRecurringJob.AddOrUpdate(() => myCleanup.CleanupOldFiles(), Cron.Hourly)
你需要创建一个在服务器后台运行的window service
。窗口服务是正常的应用程序,它自动运行,不需要任何用户事件。创建一个窗口服务,然后您可以在timer
tick event
中编写相同的代码。在这里,您可以设置执行此代码的时间。
在这里阅读更多关于窗口服务的信息…
Mvc不是这个工作。这就像问如何在火车上安装轮胎,使它能在私人街道上行驶。
为了让Mvc或任何web应用程序做一些事情,请求必须来自客户端。如果没有请求进入,IIS什么也不做,只是"监听"进入的连接。要以"正确"的方式执行此操作,您有两个选项:
-
创建一个批处理文件或Powershell脚本,甚至是一个c#控制台应用程序来删除这些文件,然后设置该批处理文件或脚本或程序在Windows任务调度程序中运行。
-
如果你需要更多的逻辑来决定何时应该删除文件,或者你需要自定义时间表,那么你应该创建一个Windows服务应用程序。你可以用c#来实现它,你可以让它做任何你想做的事情,只要它不需要GUI。如果你确实需要一个GUI来配置服务,那么你可以制作一个单独的WinForms或WPF应用程序来配置服务。有几种方法可以实现GUI/Service通信。其中比较流行的是WCF通信、数据库配置甚至INI文件。
希望这对你有帮助!