石英.在重写成员时违反了继承安全规则

本文关键字:继承 安全 规则 重写 成员 石英 | 更新日期: 2023-09-27 18:12:50

当我用Quartz浏览我的应用程序时,我得到了这个错误。. NET和MVC4.

重写成员时违反了继承安全规则:'Quartz.Core.QuartzScheduler.InitializeLifetimeService()'。重写方法的安全可访问性必须与被重写方法的安全可访问性相匹配。

我不明白这是怎么回事。

我在Global.asax中的代码:

public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            BuildQuartzScheduler();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
        private void BuildQuartzScheduler()
        {
            // construct a scheduler factory
            ISchedulerFactory schedFact = new StdSchedulerFactory();
            // get a scheduler
            IScheduler sched = schedFact.GetScheduler();            
            IJobDetail job = JobBuilder.Create<AlertasJob>().WithIdentity("AlertasJob").Build();
            ITrigger morningTrigger = TriggerBuilder.Create()
                        .ForJob(job)
                        .WithCronSchedule("0 0 6 * * ?")
                        .WithIdentity("AlertaManhaTrigger")
                        .StartNow()
                        //.WithDailyTimeIntervalSchedule(x => x.WithIntervalInMinutes(2))
                        .Build();
            ITrigger nightTrigger = TriggerBuilder.Create()
                        .ForJob(job)
                        .WithCronSchedule("0 0 23 * * ?")
                        .WithIdentity("AlertaNoiteTrigger")
                        .StartNow()
                        //.WithDailyTimeIntervalSchedule(x => x.WithIntervalInMinutes(2))
                        .Build();
            var triggersList = new Quartz.Collection.HashSet<ITrigger>() { morningTrigger, nightTrigger };
            sched.ScheduleJob(job, triggersList, true);
            sched.Start();
        }
    }

AlertasJob类:

public class AlertasJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        Parametro param = new Parametros.Parametro();
        param.Obter();
        VeriricarFuncionarioSemEPI(param);
    }
    public void VeriricarFuncionarioSemEPI(Parametro param)
    {
        DateTime? dataBusca = DateTime.Now;
        using (Data.Server.SinsysEPIEntities context = new Data.Server.SinsysEPIEntities())
        {
            var funcs = context.Funcionarios
                .Where(i => i.Funcao.ListaEPIs.Any());
            foreach (var funcionario in funcs)
            {
                List<string> lstEPI = new List<string>();
                foreach (var epi in funcionario.Funcao.ListaEPIs)
                {
                    if (epi.EPI.DiasUso.HasValue)
                    {
                        var ir =
                        context.ItemRequisicaos
                            .Where(i => i.Requisicao.CodigoFuncionario == funcionario.Codigo)
                            .Where(i => i.EPI.Codigo == epi.CodigoEPI)
                            .Where(i => i.Devolvido == null || i.Devolvido == false)
                            .Where(i => i.Requisicao.Data.HasValue && i.Quantidade.HasValue)
                            .ToList()
                            .Where(i => i.Requisicao.Data.Value <= dataBusca || i.Requisicao.Data.Value >= dataBusca.Value.AddDays(-epi.EPI.DiasUso.Value * i.Quantidade.Value));
                        if (ir.Count() == 0)
                            lstEPI.Add(epi.EPI.Nome + "(CA " + epi.EPI.CA + ")");
                    }
                }
                if (lstEPI.Any())
                {
                    var alerta = new AlertaFuncSemEPI(funcionario.Codigo, funcionario.Nome, funcionario.Funcao.Nome, lstEPI, param.EmailSemEPI);
                }
            }
        }
    }
}

谢谢你的帮助。

石英.在重写成员时违反了继承安全规则

我迁移了我们所有的石英。Net代码库远离Asp。因为这些原因。无论如何,我的第一个猜测是查看您的应用程序所运行的信任级别。如果您以中等信任运行,这很可能是问题所在。

快速搜索Quartz。网络和中等信任显示相当多的人似乎有类似的症状。如果是这样的话,那么很抱歉,除了离开Asp之外,我不能提供任何建议。