Скажем, я разрабатываю страницу портала экзамена, на которой я хочу показать обратный отсчет до даты и времени экзамена, и если эта конкретная дата и время достигнуты, я хочу перенаправить пользователя на страницу входа. Как я могу это сделать? Я пытался использовать Hangfire, но он не перенаправляет меня на перенаправленную страницу по истечении времени. Запланированные задания обновляются в базе данных (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 для выполнения фоновых запросов к серверу, если вам это нужно, но ваша работа не будет напрямую управляться серверной стороной.
Если вы имеете в виду выполнение запросов к серверу из javascript, это довольно распространенная практика. Основываясь на том, что вы описали о своей ситуации, я не могу придумать причину, по которой это было бы ненормально, если вы принимаете соответствующие меры предосторожности и следуете рекомендациям на своем сайте в целом.
Большое спасибо за разъяснение. Тогда я сделаю это с помощью Javascript. Но одно сомнение всегда возникает у меня в голове с javascript. Безопасно ли делать что-то подобное с javascript?