Quartz 在iis中一直运行
创始人
2024-03-29 05:42:42
0

1.在应用程序池中右点击 ,选择固定时间间隔,设置为0,
2.如果还不行就增加一条,每2分钟访问一次本网站的记录

3.建议增加一个后台服务,定时激活任务

启动任务、停止任务代码

public async Task Start()
        {
            Model.ret m = new Model.ret();
            string u = get_session();
            u = "1";
            if (u == "")
            {
                m.Code = "0";
                m.Msg = "开启失败!";
            }
            else
            {
                await  ClearJobTrigger();
                //从工厂中获取一个调度器实例化
                scheduler = await StdSchedulerFactory.GetDefaultScheduler();
                await scheduler.Start();

                var list = getAll();
                //创建一个作业
                for (int i = 0; i < list.Count; i++)
                {
                    try
                    {
                        IJobDetail job1 = JobBuilder.Create()
                            .SetJobData(new JobDataMap() {
                                new KeyValuePair("Url", list[i].Url),
                                new KeyValuePair("Task_id", list[i].Task_id)
                                })
                         .WithIdentity(list[i].JobName, list[i].GropName)
                         .Build();
                        var trigger = TriggerBuilder.Create()
                                                .WithCronSchedule(list[i].Cron)
                                                .Build();
                        await scheduler.ScheduleJob(job1, trigger);      //把作业,触发器加入调度器。
                    }
                    catch (Exception ex)
                    {
                    }                    
                }
                // 清除任务和触发器
                //ClearJobTrigger();
                m.Code = "1";
                m.Msg = "开启成功!";
            }
            return m;
        }
        private List getAll()
        {
            var list = new List();
            List list1 = Common.freeSqlHelper.fsqlDb.Select().Where(a => a.IsUse).ToList();
            for (int i = 0; i < list1.Count; i++)
            {
                string url = list1[i].Url == null ? "" : list1[i].Url.Trim();
                string Cron = list1[i].Cron == null ? "" : list1[i].Cron.Trim();
                if (url == "" || Cron == "")
                {
                }
                else
                {
                    Models.jobs m = new jobs();
                    m.Url = url;
                    m.Cron = Cron;
                    m.JobName = "q" + list1[i].ID;
                    m.GropName = "DemoGroup";
                    m.Task_id = list1[i].ID.ToString();
                    list.Add(m);
                }
            }
            return list;
        }

WebSite类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;
namespace Common
{
    public class WebSite : IJob
    {
        public string Url { get; set; } = "";
        public string Task_id { get; set; } = "";
        //public WebSite(string url1)
        //{
        //    url= url1;
        //}

        public Task Execute(IJobExecutionContext context)
        {
            int task_id1 = 0;
            int.TryParse(Task_id,out task_id1);
            //return Task.Factory.StartNew(() =>
            //{
            //    Console.WriteLine($"Hello {Url}!");
            //});
            return Task.Factory.StartNew(() =>
            {
                if (Url != "")
                {
                   var s=  UrlPost.HttpGet1(Url);
                    if (s.Code == "1")
                    {
                        Common.Class1.setLog("0", "任务调度程序", "成功", "任务id为"+task_id1 + "," + s.Msg);
                        var  t5 = freeSqlHelper.fsqlDb.Update()
                            .Set(a => new Model.Tasks { LastTime=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),LastTime_note=s.Msg })//多个字段信息修改
                            .Where(a => a.ID==task_id1).ExecuteAffrows();
                    }
                    else
                    {
                        Common.Class1.setLog("0", "任务调度程序", "失败", "任务id为"+task_id1 + "," + s.Msg);
                    }
                    
                }
                context.JobDetail.JobDataMap.Put("RunSuccess", true);
            });
        }
    }
}
 

UrlPost类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.IO;
using System.Net;

using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
namespace Common
{
    public class UrlPost
    {
        //static object lock_url = new object();
        ///


        /// 模拟打开网址 get方式
        ///

        /// 网址
        /// json参数
        ///
        static public Model.ret HttpGet(string url, string senddata)
        {
            Model.ret m = new Model.ret();
            //lock (lock_url)
            //{
            string r1 = "";
            try
            {
                ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
                System.Net.WebClient webc = new System.Net.WebClient();
                var apiurl = new Uri(url);
                string sendstr = senddata;
                webc.Headers.Add("Content-Type", "text/xml");
                //webc.Headers["Content-Type"] = "application/stream;charset=utf-8";//OK  
                var arr = webc.UploadData(apiurl, Encoding.UTF8.GetBytes(sendstr));
                r1 = Encoding.UTF8.GetString(arr);
                m.Code = "1";
                m.Msg = "访问成功!";
            }
            catch (Exception ex)
            {
                m.Code = "1";
                m.Msg = "访问失败,原因:" + ex.Message;
            }
            return m;
            //}

        }
        ///


        /// 模拟打开网址
        ///

        ///
        ///
        static public Model.ret HttpGet1(string url, string encoding = "UTF-8")
        {
            Model.ret m = new Model.ret();
            string s3 = "";
            //lock (lock_url)
            //{
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                //声明一个HttpWebRequest请求
                request.Timeout = 30000;
                //设置连接超时时间
                request.Headers.Set("Pragma", "no-cache");
                //request.Method = "POST";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream streamReceive = response.GetResponseStream();
                //StreamReader streamReader = new StreamReader(streamReceive, Encoding.GetEncoding("GB2312"));
                //StreamReader streamReader = new StreamReader(streamReceive, Encoding.GetEncoding(encoding));
                if (encoding == "Default")
                {
                    StreamReader streamReader = new StreamReader(streamReceive, Encoding.Default);
                    s3 = streamReader.ReadToEnd();
                }
                else
                {
                    StreamReader streamReader = new StreamReader(streamReceive, Encoding.GetEncoding(encoding));
                    s3 = streamReader.ReadToEnd();
                }
                m.Code = "1";
                m.Msg = "访问成功!";
            }
            catch (Exception ex)
            {
                m.Code = "0";
                m.Msg = "访问失败,原因:" + ex.Message;
            }
            return m;
            //}
        }
        ///
        /// 模拟打开网址 post方式
        ///

        ///
        ///
        ///
        static public string HttpPost(string Url, string dataStr = "")
        {
            string retString = "";
            //lock (lock_url)
            //{
            try
            {

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "POST";
                request.ContentType = "application/json;charset=UTF-8";
                request.ContentLength = Encoding.UTF8.GetByteCount(dataStr);

                Stream myRequestStream = request.GetRequestStream();
                StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));

                myStreamWriter.Write(dataStr);
                myStreamWriter.Close();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();


                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
            }
            catch (Exception ex)
            {
            }
            //}
            return retString;
        }

        static public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {  // 总是接受  
            return true;
        }
    }
}
 

namespace WebApplication1.Models
{
    public class jobs
    {
        public string Task_id { set; get; } = "";
        public string Url { set; get; } = "";
        public string TiggerName { set; get; } = "";
        public string JobName { set; get; } = "";
        public string GropName { set; get; } = "";
        public string Cron { set; get; } = "";
    }
}
 

相关内容

热门资讯

50余位法律人晨跑椰城 共话专... 人民网海口12月28日电 (记者李学山)12月27日清晨7时30分,海口红城湖畔晨雾缭绕,随着一声“...
男子因纠纷引燃易燃物品致本人死... 12月28日,成都市公安局高新区分局发布警情通报: 12月28日下午,高新区南三环路四段一汽车销售服...
茅台称尽最大努力防止价格炒作,... 备受关注的茅台2026年全国经销商联谊会于12月28日下午举行。2025年在经历了换帅,一年内飞天茅...
原创 清... 1911年10月10日晚,武昌城头的枪声划破夜空。起义军用的两众枪,是从湖北新军军械库里抢来的;而对...
无锡律师行业前景与老律师经验传... 在无锡、常州、苏州、镇江、南通等地,律师行业正展现出蓬勃的发展态势,无锡律师行业前景更是备受瞩目。随...
南京市廉政文化研究会应邀赴西安... 扬子晚报网12月28日讯(通讯员 杨雅舒 邵加宝 记者 闫春旭)12月28日,由陕西省廉政文化研究会...
北京放宽购房门槛,优化住房信贷...   为更好满足居民刚性和多样化改善性住房需求,北京进一步优化调整房地产相关政策。   12月24日,...
刘百奇:政策与市场双轮驱动——... 12月28日,由创业黑马主办的“第17届创业家年会”在北京举办,年会主题为“智业革命 —— 跨越断层...
原创 郑... 自从被曝与前夫张恒在国外合开代孕机构之后,郑爽突然又活跃了起来,舆论都过去了,以郑爽名义成立的几个账...
成都警方通报燃爆事件:段某因纠... 2025年12月28日,成都市公安局高新区分局发布警情通报: 来源:成都公安