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 "记录日志";
}
}
}