Запрос имеет явное время ожидания, которое определяется сервером.Я забыл, какое значение по умолчанию, но это явное время ожидания определенно будет меньше, чем часы.См. Этот пост для получения дополнительной информации: Как увеличить executeTimeout для долго выполняющегося запроса?
<system.web>
<httpRuntime executionTimeout = "SOME LARGE VALUE" />
Это увеличит время ожидания для ВСЕХ страниц в приложении, поэтому используйте элемент locationИдеально определить его для одного пути:
<location path="Pathtolongrunningtask">
<system.web>
<httpRuntime executionTimeout = "SOME LARGE VALUE" />
Элемент maxRequestLength также увеличивает максимальный размер загружаемых данных, поэтому также важно обновить этот параметр, если загружается большой файл.
Что мы сделали с некоторым успехом в прошлом, так это загрузили страницу и инициировали запрос с помощью вызова AJAX и подождали, пока этот вызов завершится.Одна из распространенных проблем заключается в том, что по какой-то причине сеанс пользователя может прекратиться, и это не позволит завершить процесс, поэтому нам нужно было добавить механизм поддержки активности, чтобы во время ожидания ответа сеанс не прерывался и не регистрировалсяпользователь вышел.
Как правило, могут возникнуть проблемы с выполнением этого в течение жизненного цикла HTTP - если вы можете использовать задачу Windows, веб-работника Azure или что-то вне жизненного цикла HTTP, это будет работать лучше.