如何在特定时间在ASP.NET中运行代码

时间:2019-05-15 07:35:19

标签: c# asp.net-mvc pdf file-upload web-applications

我有ASP.NET MVC 5应用程序。我的应用程序的主要功能之一是上传pdf文件,并通过ocr读取一些值并制作其他内容。

现在,我想实现功能,通过该功能,我的应用程序应在特定时间检查特定文件夹(例如pdf_folder),并检查是否存在pdf文件,并自动上传每个pdf文件并执行其余操作我的应用程序的逻辑。上传完所有文件后,应将其全部移动到另一个文件夹(finished_folder)。

例如,当用户通过我的应用程序手动上传pdf时,这是我的控制器来处理uploade文件。 我只是想在特定时间自动完成此过程。

 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 个答案:

答案 0 :(得分:3)

有很多解决此问题的方法。这是我使用的2个选项:

  1. 使用Quartz.Net库创建计划任务。 Documentation
  2. 编写一个控制台应用程序,然后将其添加到Windows调度程序中。应用程序将调用所需的方法。
  3. 对于点网核心应用程序:Implement background tasks

这些方法解决了应用程序入睡的问题

答案 1 :(得分:2)

此任务必须使用后台作业。 有两种方法

  1. 使用任务计划程序(您需要使用以下命令创建控制台应用程序 您的逻辑(例如您要执行的任务)并将其添加到任务中 调度程序。
  2. 使用Hangfire(https://www.hangfire.io/