В приложении ASP.Net пользователь нажимает кнопку на веб-странице, после чего создается экземпляр объекта на сервере через обработчик событий и вызывается метод объекта. Метод передается во внешнюю систему для выполнения каких-либо действий, и это может занять некоторое время. Итак, что я хотел бы сделать, так это запустить этот вызов метода в другом потоке, чтобы я мог вернуть управление пользователю с помощью «Ваш запрос был отправлен». Я достаточно счастлив сделать это как «выстрелил и забыл», хотя было бы еще лучше, если бы пользователь мог продолжать опрашивать объект на предмет статуса.
Я не знаю, разрешает ли IIS мой поток продолжать работу, даже если срок сеанса пользователя истекает. Представьте, что пользователь запускает событие, а мы создаем экземпляр объекта на сервере и запускаем метод в новом потоке. Пользователь доволен сообщением «Ваш запрос отправлен» и закрывает свой браузер. В конце концов, этот сеанс пользователя истечет в IIS, но поток все еще может работать, выполняя работу. Будет ли IIS разрешать потоку продолжать работу или он убьет его и избавится от объекта по истечении пользовательского сеанса?
РЕДАКТИРОВАТЬ: Из ответов и комментариев я понимаю, что лучший способ сделать это - переместить длительную обработку за пределы IIS. Помимо всего прочего, это касается проблемы повторного использования домена приложения. На практике мне нужно запустить версию 1 за ограниченное время и работать внутри существующей структуры, поэтому я хотел бы избежать уровня обслуживания, отсюда и желание просто запустить поток внутри IIS. На практике «длительная работа» здесь будет составлять всего несколько минут, а параллелизм на веб-сайте будет низким, так что все должно быть в порядке. Но в следующей версии обязательно потребуется разделение на отдельный сервисный уровень.