C# 在ASP.NET MVC中创建后台进程
我有一些数据只有在其过期日期(在创建数据时设置)大于今天,或者其状态为C# 在ASP.NET MVC中创建后台进程,c#,asp.net,.net,asp.net-mvc,backgroundworker,C#,Asp.net,.net,Asp.net Mvc,Backgroundworker,我有一些数据只有在其过期日期(在创建数据时设置)大于今天,或者其状态为已关闭(用户可以随时更改状态)时才能显示。因此,当数据过期时,其状态应自动设置为Closed 在这种情况下,我想创建一些后台任务,每天检查一次数据(这是个问题,因为主机通常设置应用程序池空闲超时20分钟),并在数据过期时设置状态 我读了一些关于如何实现我想要的东西的文章。但是,我不知道最好的方法是什么 主要解决方案如下: ) ) ) 所以问题是:在ASP.NET中实现后台进程的最佳方法是什么? 另外,我知道更好的解决方案是在
已关闭
(用户可以随时更改状态)时才能显示。因此,当数据过期时,其状态应自动设置为Closed
在这种情况下,我想创建一些后台任务,每天检查一次数据(这是个问题,因为主机通常设置应用程序池空闲超时20分钟),并在数据过期时设置状态
我读了一些关于如何实现我想要的东西的文章。但是,我不知道最好的方法是什么
主要解决方案如下:
public class Theme
{
//...
[Required]
public DateTime FinishTime { get; set; } }
public Status? Status { get; set; }
}
这听起来更适合调度程序。将执行您想要的操作,并且在此场景中配置起来非常简单:
public class MyJob : IJob
{
public void Execute(IJobExecutionContext context)
{
// Find and update data here
}
}
// define the job and tie it to our MyJobclass
IJobDetail job = JobBuilder.Create<MyJob>()
.WithIdentity("myJob")
.Build();
// Trigger the job to run at midnight every day
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger")
.StartAt(DateBuilder.AtHourOfDay(0))
.WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
.Build();
// Tell quartz to schedule the job using our trigger
scheduler.ScheduleJob(job, trigger);
公共类MyJob:IJob
{
public void Execute(IJobExecutionContext上下文)
{
//在此处查找并更新数据
}
}
//定义作业并将其绑定到MyJobclass
IJobDetail job=JobBuilder.Create()
.WithIdentity(“我的工作”)
.Build();
//触发作业在每天午夜运行
ITrigger trigger=TriggerBuilder.Create()
.WithIdentity(“myTrigger”)
.StartAt(DateBuilder.AtHourOfDay(0))
.WithSimpleSchedule(x=>x.WithIntervalInHours(24).RepeatForever())
.Build();
//告诉quartz使用触发器安排作业
ScheduleJob(作业,触发器);
Quartz的页面上有很多示例。将“过期数据”存储在哪里(如何/什么)?您能否修改查询以不显示未过期的数据?据我所知,在IIS中运行后台进程不是一个好方法。我总是使用Windows服务进行计划工作。@Ryan,righht现在我用查询隐藏dat a,但当我向用户显示此数据(可以处理它)时,用户将看到状态“活动”而不是“关闭”。如果记录过期,您可以使用视图模型来显示正确的状态。@Ryan,哦,谢谢,我想我会按照您的建议,它将至少向数据库保存一个更改请求。