using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Hangfire; using System.Net; using System.IO; using System.Text; using NLog; //using Microsoft.Extensions.Logging; namespace WebApplication1.Controllers { [Route("api/[controller]/[action]")] public class ValuesController : Controller { static Logger Logger = LogManager.GetCurrentClassLogger(); #region 四个定时基础方法 /// /// 基于队列的任务处理(Fire-and-forget jobs) /// /// /// public string Enqueue(string str) { var jobId = BackgroundJob.Enqueue( () => Console.WriteLine("Fire-and-forget!")); return $"基于队列的任务处理 Enqueue : jobId={jobId}"; } /// /// 延迟任务执行(Delayed jobs) /// /// public string Delayed() { var jobId = BackgroundJob.Schedule( () => Console.WriteLine("Delayed!"), TimeSpan.FromSeconds(10)); return $"延迟任务执行 Delayed : jobId={jobId}"; } /// /// 定时任务执行(Recurring jobs) /// /// public string Recurring() { RecurringJob.AddOrUpdate(() => Console.Write("定时任务执行 Recurring "), "1/1 * * * *"); return $"定时任务执行 Recurring "; } /// /// 延续性任务执行 /// public string Continuations(string jobId) { BackgroundJob.ContinueWith( jobId, () => Console.WriteLine("Continuation!")); return $"延续性任务执行 Continuation "; } #endregion /// /// 定时任务执行导出 /// /// public string RecurringToExport() { RecurringJob.AddOrUpdate(() => HttpGetExport(), Cron.Minutely); return $"定时任务执行导出 api/Values/Export/ "; } public void HttpGetExport() { try { Logger.Info("定时任务执行【导出】【开始】 api/Values/Export/"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8082/api/Values/Export?start=2017-12-08&end=2017-12-09"); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); var result = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); if (result != "定时导出Excel文件,并保存Excel文件信息到数据库中") throw new Exception("导出错误"); Logger.Info("定时任务执行【导出】【结束】 api/Values/Export/"); } catch (Exception e) { Logger.Error(e, "定时任务执行【导出】【失败】 api/Values/Export/"); } } public string Log() { Logger.Info("普通信息日志-----------"); Logger.Debug("调试日志-----------"); Logger.Error("错误日志-----------"); Logger.Fatal("异常日志-----------"); Logger.Warn("警告日志-----------"); Logger.Trace("跟踪日志-----------"); Logger.Log(NLog.LogLevel.Warn, "Log日志------------------"); return "记录日志"; } } }