如何安排任务在 asp.net 网络表单中的特定日期之后执行?
How do schedule a task to do it after at a specific date in asp.net webforms?
假设我正在设计一个考试门户页面,我想在其中显示考试日期和时间的倒计时,如果达到该特定日期和时间,我想将用户重定向到登录页面。我怎样才能做到这一点?我曾尝试使用 Hangfire,但它不会在 reached.The 计划作业在数据库上更新 (HangFire.Job) 后将我重定向到重定向页面,但它不会将我重定向到另一个页面。我是编程方面的新手,我知道的不多,所以指导我如何实现类似的东西将不胜感激,是的,甚至可以使用 Hangfire 做这样的事情吗?
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
GlobalConfiguration.Configuration
.UseSqlServerStorage("calanders");
var option = new DashboardOptions { AppPath = VirtualPathUtility.ToAbsolute("/Default.aspx") };
app.UseHangfireDashboard("/hangfire",option);
app.UseHangfireServer();
}
这是Startup.cs
protected void Button1_Click(object sender, EventArgs e)
{
GlobalConfiguration.Configuration
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseColouredConsoleLogProvider()
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseSqlServerStorage("calanders", new SqlServerStorageOptions
{
CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero,
UseRecommendedIsolationLevel = true
});
BackgroundJob.Schedule(() => startCountdown(),TimeSpan.FromSeconds(20));
//d.InsertDate(TextBox1.Text.ToDa);
}
public void startCountdown()
{
Response.Write("<script>alert('Time Reached')</script>");
Response.Redirect("WebForm1.aspx");
}
这是主页。 (Default.aspx)
在网络表单中,在回发之间没有与服务器的持续连接,因此在服务器端激活的作业将无法在未来的任意时间与用户交互;仅在触发按钮点击和返回响应之间的即时时间内。
如果您想显示一个计时器,然后在它完成后执行某些操作,您应该研究如何在客户端使用 Javascript 执行此操作(如果这适用于您的方案)。如果需要,您可以使用 Javascript 向服务器发出后台请求,但您的工作不会直接由服务器端驱动。
假设我正在设计一个考试门户页面,我想在其中显示考试日期和时间的倒计时,如果达到该特定日期和时间,我想将用户重定向到登录页面。我怎样才能做到这一点?我曾尝试使用 Hangfire,但它不会在 reached.The 计划作业在数据库上更新 (HangFire.Job) 后将我重定向到重定向页面,但它不会将我重定向到另一个页面。我是编程方面的新手,我知道的不多,所以指导我如何实现类似的东西将不胜感激,是的,甚至可以使用 Hangfire 做这样的事情吗?
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
GlobalConfiguration.Configuration
.UseSqlServerStorage("calanders");
var option = new DashboardOptions { AppPath = VirtualPathUtility.ToAbsolute("/Default.aspx") };
app.UseHangfireDashboard("/hangfire",option);
app.UseHangfireServer();
}
这是Startup.cs
protected void Button1_Click(object sender, EventArgs e)
{
GlobalConfiguration.Configuration
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseColouredConsoleLogProvider()
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseSqlServerStorage("calanders", new SqlServerStorageOptions
{
CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero,
UseRecommendedIsolationLevel = true
});
BackgroundJob.Schedule(() => startCountdown(),TimeSpan.FromSeconds(20));
//d.InsertDate(TextBox1.Text.ToDa);
}
public void startCountdown()
{
Response.Write("<script>alert('Time Reached')</script>");
Response.Redirect("WebForm1.aspx");
}
这是主页。 (Default.aspx)
在网络表单中,在回发之间没有与服务器的持续连接,因此在服务器端激活的作业将无法在未来的任意时间与用户交互;仅在触发按钮点击和返回响应之间的即时时间内。
如果您想显示一个计时器,然后在它完成后执行某些操作,您应该研究如何在客户端使用 Javascript 执行此操作(如果这适用于您的方案)。如果需要,您可以使用 Javascript 向服务器发出后台请求,但您的工作不会直接由服务器端驱动。