Как запустить код в определенное время в ASP.NET - PullRequest
1 голос
/ 15 мая 2019

У меня есть приложение ASP.NET MVC 5. Одной из ключевых функций моего приложения является загрузка pdf-файла и через ocr чтение некоторых значений и создание других вещей.

Теперь я хотел реализовать функциональность, с помощью которой мое приложение должно в определенное время проверять, например, конкретную папку (pdf_folder) и проверять, есть ли файл или файлы pdf, автоматически загружать каждый файл pdf и выполнять оставшуюся часть логика моего приложения. После завершения загрузки всех файлов следует переместить все в другую папку (Finished_folder).

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

 public ActionResult GetAlreadyScannedFileList(HttpPostedFileBase file)
    {
        string path = "";

        if (file != null && file.ContentLength > 0)
        {


                UploadFileModel uploadFileModel = new UploadFileModel();

                uploadFileModel.FileName = path;
                uploadFileModel.UserId = 1;

                //Unique guid should be generated for each and every uplaoded file.
                Guid guid;
                Session["Guid"] = guid = _uploadFileService.AddUploadFile(uploadFileModel);

                //Save chnages.
                _unitOfWork.Commit();

                UploadFileModel uploadFile = _uploadFileService.GetUploadFileByGuid(guid);
                int uploadFileId = uploadFile.UploadFileId;

                _uploadFileService.ArchiveUploadFile(uploadFile.FileName);

                //send complete mail
                _uploadFileService.SendMailAfterComplete(uploadFileId);

                return RedirectToAction("SplittedItems", "UploadFile", new { id = uploadFileId });


                return RedirectToAction("GetAlreadyScannedFileList");

    }
}

Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 15 мая 2019

Есть много решений этой проблемы. Вот 2 варианта, которые я использую:

  1. Для использования библиотеки Quartz.Net для создания запланированных заданий. Документация
  2. Напишите консольное приложение и, например, добавьте его в планировщик Windows. Приложение вызовет нужный метод.
  3. Для базовых приложений dot net: Реализация фоновых задач

Эти подходы решают проблему засыпания приложения

2 голосов
/ 15 мая 2019

Вы должны использовать фоновые задания для этой задачи.Есть два способа

  1. Использование планировщика задач (вам нужно будет создать консольное приложение со своей логикой, например, задачей, которую вы хотите выполнить) и добавить его в планировщик задач.
  2. ИспользованиеHangfire (https://www.hangfire.io/)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...