Почему Application_Start запускается несколько раз в Global.asax? - PullRequest
4 голосов
/ 21 февраля 2010

У меня есть приложение Silverlight, размещенное на странице ASP.NET. Мне нужно выполнить некоторую обработку при первом запуске приложения и запустить некоторые фоновые процессы (различные периодические проверки).

Я думал, что событие Global.asax Application_Start будет хорошим местом для этого, но я обнаружил, что Application_Start запускается несколько раз, чего я не ожидал. Из того, что я прочитал, кажется, что когда последний пользователь выходит из моего приложения, его сеанс исчезает, и IIS выгружает мое приложение. При следующем запросе он снова загружается, и снова запускается Application_Start, что не совсем то, что я хочу.

Это ожидаемое поведение? Есть ли способ сохранить приложение загруженным и не перезапускать его так?

Во-вторых, у меня есть эти периодические фоновые процессы, которые я хочу запустить. Возможно, для них было бы лучше использовать службу Windows, но в моем приложении удобно запускать таймер из статического класса. Могу ли я сохранить их работоспособными, даже если нет активных пользователей?

1 Ответ

2 голосов
/ 21 февраля 2010

Я думаю, что вы пытаетесь добиться поведения, которое просто не вписывается в модель веб-сервера. Многие CMS пытаются выполнять периодические задачи и т. Д., Когда некоторые пользовательские веб-запросы инициируют работу, но я никогда не видел, чтобы это делалось с большим успехом.

Если вы не ограничены проблемами развертывания, правами доступа и т. Д., Я бы порекомендовал использовать подход Windows Service. Просто включите его в процесс сборки / развертывания, чтобы это не стало неприятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...