2015-05-24 2 views
0

Мне нужно написать сценарий, который удаляет файлы старше 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); 
      } 
     } 

Но я не знаю, где это определить и как позвонить. Нужно ли мне создавать новый контроллер или что-то подобное?

+2

Лично я бы сохранил его за пределами «MVC». Это действительно просто работа, которая периодически (и относительно редко) выполняется, но не привязана к какому-либо нормальному жизненному циклу приложения. – user2864740

+2

YIKES! Звучит как настоящее странное требование ... вы можете делать все, что хотите, в приложении, но отвечать на эти вопросы: 1) Что произойдет, если никто не назовет ваше приложение MVC более 7 дней, кто будет запускать код «удалить файлы»? 2) Безопасно ли ваше веб-приложение, что вы уверены, что он может изменять файлы на вашем диске? – Ruskin

+0

Кстати, это не сценарий. Это часть компьютерной программы. –

ответ

0

Ну что вам нужно создать window service, который будет работать в фоновом режиме на сервере. Службы окон - это обычное приложение, которое запускается автоматически без какого-либо пользовательского события. Создайте сервис окна, затем вы можете написать тот же код, который был заключен в timertick event. Там вы можете установить время, когда вы хотите выполнить этот код.

Обычно оконное обслуживание после развертывания начинает выполнять ваш код каждую секунду. Поэтому вам нужно установить часы. С помощью таймера вы можете выполнять свой код согласно вашему требованию, каждый день в определенное время, один раз в неделю, раз в месяц или около того и так далее.

Подробнее об оконных услугах here...

и дайте мне знать, если вам нужен код для этого.

0

Mvc не является задачей для этого. Это похоже на вопрос, как устанавливать шины на поезде, чтобы он мог подъехать к частной улице.

Для того, чтобы Mvc или любое веб-приложение могло что-то сделать, запрос должен поступать от клиента. Если запрос не поступает, IIS ничего не делает и просто «слушает» для входящих подключений. Для того, чтобы сделать это «правильный» путь, у вас есть два варианта:

  1. Создать batch file или Powershell script или даже C# console application, которая удаляет файлы, то настройки, что пакетный файл или скрипт или программу для запуска в Windows Task Scheduler.

  2. Если вам нужно больше логики, чтобы определить, когда файлы должны быть удалены или вам нужны настроенные расписания, тогда вы должны сделать Windows Service Application. Вы можете сделать это на C#, и вы можете заставить его делать все, что хотите, до тех пор, пока ему не нужен графический интерфейс. Если вам нужен графический интерфейс, возможно, для настройки службы, вы можете создать отдельное приложение WinForms или WPF, которое может настроить службу. Существует несколько способов реализации интерфейса GUI/Service. Некоторые из наиболее популярных - это связь WCF, конфигурация базы данных или даже файлы INI.

Надеюсь, это поможет!

Смежные вопросы