Я хочу периодически запускать событие на стороне сервера, которое должно быть инициировано сервером в сценарии ASP.NET. Запроса от клиента не будет.Периодически запускайте событие на самой стороне сервера
Ваша помощь будет очень признательна.
Я хочу периодически запускать событие на стороне сервера, которое должно быть инициировано сервером в сценарии ASP.NET. Запроса от клиента не будет.Периодически запускайте событие на самой стороне сервера
Ваша помощь будет очень признательна.
Вам необходимо создать процесс, используя класс Process. Процесс будет спать до тех пор, пока не наступит время повторения.
Process p = new Process();
p.StartInfo.FileName = "foo";
p.Start();
Другой альтернативой является намотать нить с помощью Thread класса.
Я бы не вызвал процесс из пула ASP.NET. Я слышал, что это может вызвать проблемы. – Remy
@Remy Конечно, это возможно, но, с другой стороны, иногда это необходимо (это действительно зависит от того, что должен делать OP). – Sklivvz
Справа. Но я думаю, важно отметить, что это не «рекомендуемый» способ. – Remy
Для аналогичной ситуации в некоторых приложениях я использую отдельный сервис (услуга Windows/веб-сервис) и использую System.Threading.Timer
(см. http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx) и реализую собственный планировщик. Или иначе, вы можете использовать любой планировщик на основе сервера, чтобы вызвать какой-либо исполняемый файл, который, в свою очередь, попадает в вашу службу.
webservice + таймер + планирование. если, скажем, мое приложение на сервере отключается, потому что в приложении нет активности. Будут ли вышеприведенные комбинации оставаться живыми, чтобы попасть в ожидающую работу? – Atif
Служба Win/web не будет отключена из-за отсутствия активности. – Kangkan
Предполагая, что у вас есть доступ к серверу и вы можете установить внешние приложения, вы можете создать автономный Windows Service или даже консольное приложение, которое запускается встроенным Windows Task Scheduler.
Для чего-то, что работает в Asp.Net, вы можете использовать Quartz.net. This SO вопрос объясняет, как использовать его с Asp.Net
Я бы просто создал стандартный исполняемый файл командной строки и запустил его с помощью Windows Scheduling Tool. Служба Windows прекрасна, если она выполняется очень коротко, но, например, для задачи раз в день, я думаю, что это неправильный подход.
Посмотрите на Windows Workflow Foundation
Эта структура построена для такого рода вещей, как состояние Настойчивость и т.д. Он также работает по отдельности, так что процесс не будет идти вниз, когда ваше приложение (пул) идет вниз (по умолчанию из-за IIS).
Интеграция полностью с asp.net, и вы, вероятно, окажетесь (положительно) с помощью Delay Activity.
Не могли бы вы дать оценку здесь? – Kangkan