Периодически запускать событие на самой стороне сервера - PullRequest
1 голос
/ 18 января 2011

Я хочу периодически запускать событие на стороне сервера, которое должно инициироваться сервером в сценарии ASP.NET. Там не будет запроса от клиента.

Ваша помощь будет высоко оценена.

Ответы [ 5 ]

1 голос
/ 18 января 2011

Если у вас есть доступ к серверу и вы можете устанавливать внешние приложения, вы можете создать автономную Службу Windows или даже консольное приложение, которое запускается встроенным Планировщиком задач Windows .

Для чего-то, что работает в Asp.Net, вы можете использовать Quartz.net . Этот ТАК вопрос объясняет, как использовать его с Asp.Net

0 голосов
/ 18 января 2011

Взгляните на Windows Workflow Foundation

Эта структура построена для таких вещей, как сохранение состояния и т. Д. Она также выполняется отдельно, поэтому процесс не будет остановлен, когда ваше приложение (пул) выйдет из строя (по умолчанию из-за IIS).

Полностью интегрируется с asp.net, и вы, вероятно, в конечном итоге (в положительном смысле) получите Задержка активности .

0 голосов
/ 18 января 2011

Я бы просто создал стандартный исполняемый файл командной строки и запустил его с помощью Windows Scheduling Tool.Служба Windows хороша, если она запускается с очень короткими интервалами, но, например, для задачи раз в день, я думаю, что это неправильный подход.

0 голосов
/ 18 января 2011

Для аналогичной ситуации в некоторых приложениях я использую отдельную службу (служба Windows / веб-служба) и использую System.Threading.Timer (см. http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx) и реализую свой собственный планировщик. Или в противном случае вы может использовать любой стандартный серверный планировщик для вызова некоторого исполняемого файла, который, в свою очередь, попадает в вашу службу.

0 голосов
/ 18 января 2011

Вам нужно запустить процесс, используя класс Process . Процесс будет спать до тех пор, пока не наступит время повторения.

Process p = new Process();
p.StartInfo.FileName = "foo";
p.Start();

Другой альтернативой является наматывание потока с использованием класса Thread .

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