Фоновый поток в приложении 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).

Другие вопросы по тегам