【发布时间】:2024-01-17 20:55:01
【问题描述】:
我可以访问我的实时服务器的 db 和 ftp。我想安排一个任务。我在 Quartz.net (ASP.Net C#) 中做了一个计划,它在本地服务器上运行良好,当我将它上传到服务器时,我没有输出。我在任务的顶部和底部添加了一个文件写入命令,这些文件正在写入目标。这是我写的代码
public partial class saaiTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TestClass t = new TestClass();
t.method("start");
ISchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = factory.GetScheduler();
IJobDetail job = JobBuilder.Create<TestClass>()
.WithIdentity("name", "group")
.Build();
ITrigger triggerCron = TriggerBuilder.Create()
.WithCronSchedule("0 0/1 * 1/1 * ? *")
.StartNow()
.Build();
scheduler.ScheduleJob(job, triggerCron);
scheduler.Start();
Thread.Sleep(TimeSpan.FromMinutes(10));
scheduler.Shutdown();
t.method("stop");
}
}
public class TestClass : IJob
{
public void Execute(IJobExecutionContext context)
{
this.method("job");
}
public void method(string filename)
{
StreamWriter file2 = new StreamWriter(HostingEnvironment.MapPath("~\\test\\" + filename + ".txt"), true);
file2.WriteLine("Write Time : " + DateTime.Now);
file2.Close();
}
}
我通过运行此页面开始计划,并尝试将其添加到Global.asax。我应该怎么做才能在我的实时服务器中启动调度程序,是否可以从服务器停止调度,如果可以,解决方案是什么?
【问题讨论】:
-
如果你将 Quartz 添加到你在 IIS 服务器上运行的应用程序中,那么它迟早会停止,Quartz 也会停止。因此,在我看来,此类操作的最佳解决方案是使用 Quartz 作业创建本地服务,并将其作为本地服务在您的实时服务器上运行
-
您是否检查过asp.net 有权在此文件夹中写入文件?
-
@derloopkat 是的,检查我是否尝试在顶部和底部写入两个文件,它们被写入文件夹
-
@Marcin 我可以访问 db 和 ftp,如何作为本地服务运行?
-
当你进入服务器的 bin 文件夹时,你能看到那里的quartz dll吗?
标签: c# asp.net quartz-scheduler quartz.net