На нашем сайте есть страница администратора, которая позволяет администраторам запускать процесс, который копирует страницу данного шаблона CMS в пару сотен каталогов. Я предполагаю, что этот процесс занимает несколько минут, поэтому время ожидания страницы истекает. Итак, я думаю, что нам нужно, чтобы кнопка отправки запускала задачу, а затем проводила опрос страницы для получения результатов каждые X секунд, пока она не завершится.
Я пытался понять, как это сделать, и видел популярный пост Фила Хаака "Опасности реализации повторяющихся фоновых задач в ASP.NET". Хотя можно привести достойный аргумент, что эту работу должно выполнять внешнее приложение, а не веб-сервер, в действительности оно не будет использоваться очень часто, админам будет нужен веб-интерфейс, и у нас уже есть рабочая версия код, браузер просто не ждет достаточно долго, чтобы сообщить о завершении.
Я наткнулся на HostingEnvironment.QueueBackgroundWorkItem и подумал, что это может сработать, за исключением того, что текущий HttpContext для него недоступен. Я думаю, что это может помешать API CMS, но я также планировал использовать состояние сеанса для своего флага, чтобы указать, когда задача была завершена.
Я видел страницы, такие как туристические веб-сайты или веб-интерфейс SSRS, отображающие страницу опроса, в то время как она выполняет какую-то длительную обработку. Для этого мне не нужно ничего замысловатого или замысловатого, мне просто нужно избежать тайм-аута. Я на неправильном пути с QueueBackgroundWorkItem? Если нет, как я могу узнать, когда задача завершена?