Фоновый поток в приложении asp.net
Я запускаю фоновый поток в Application_Start() в global.asax, чтобы использовать его как службу Windows, но applicationaton_end запускается, когда вся сессия заканчивается на моем сайте
у меня есть смс Бизнес, который работает с веб-сервисом, и я хочу, чтобы на моем сервере был агент, который проверяет входящие сообщения, такие как служба Windows
я увеличиваю время ожидания сеанса до 10 часов, но когда я закрываю браузер, приложение запускается, и мой поток перестает работать
я не могу изменить свойства сервера
могу ли я отключить application_end, чтобы поток продолжал работать?
Я извиняюсь перед вами из-за плохого английского написания
3 ответа
iis автоматически закрывает приложение веб-сайта, когда на веб-сайте не открыта ни одна сессия, чтобы отключить его, вы можете изменить время простоя в iis или прочитать ссылку на веб-сайт в функции global.asax (application_end), чтобы начать новую сессию
Для этого вы должны создать отдельную программу, которая запускается как служба или пакетная программа. Хотя ASP.NET сохраняет статические переменные и тому подобное между загрузками страниц, вы не должны использовать его для запуска вещей в фоновом режиме. Нет никаких гарантий, что все будет продолжаться.
Если вам нужно, чтобы что-то происходило на стороне пользователя, когда что-то происходит на сервере (например, полученное сообщение (например, на Facebook), кто-то отвечает на запрос или возникает другое событие), вам нужно внедрить систему опроса в javascript on веб-страница, которую видит пользователь, которая использует AJAX (найдите его... это такая замечательная концепция), чтобы периодически общаться с сервером, чтобы узнать, не произошло ли что-нибудь. Именно так чат Facebook работает вместе с большинством систем веб-почты для проверки новых сообщений. Сервер не общается с браузером... браузер спрашивает сервер, если что-то произошло.
Вот пример программы чата, которая использует AJAX: http://www.dynamicajax.com/fr/JSON_AJAX_Web_Chat-.html
Это не совсем то, что вы делаете, но демонстрирует концепцию попытки что-то проверить после загрузки страницы и заставить браузер пользователя реагировать.
Возможно, используйте.NET-версию библиотеки кварцевых планировщиков (http://quartz-scheduler.org/) для определения и запуска задания на основе конфигурации (выражение cron).