Как я могу запустить задачу в ASP.NET без взаимодействия с пользователем - PullRequest
1 голос
/ 15 января 2012

Я создаю сайт, который требует постоянного мониторинга, чтобы мы могли убедиться, что никто не пытается «обмануть систему» ​​(это игра).Я просто хочу иметь таймер, который запускается (когда я публикую сайт) и никогда не останавливается.И он должен постоянно контролировать записи в БД, скажем, каждые x минут.

Я думаю, что мне нужен веб-сервис, но, возможно, есть другой способ приблизиться к этому?

Примечание: Там будетнет «клиента / клиентов», подключающихся к этой «услуге», или что бы то ни было.

Ответы [ 5 ]

3 голосов
/ 15 января 2012

почему бы не использовать WindowsService? если это не вариант, то вам нужен как минимум один начальный запрос к веб-серверу для запуска отдельного рабочего потока.

Также, если вы используете .net4 и IIS7.5, вы можете использовать функцию автозапуска asp.net и избавиться от этого первоначального запроса для запуска приложения:

http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx

2 голосов
/ 15 января 2012

Либо вам нужно использовать функцию автозапуска ASP.net 4.

Есть два способа

1. http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx

  1. http://msdn.microsoft.com/en-us/library/system.web.preapplicationstartmethodattribute.aspx

    Оба из вышеперечисленных необходимы для запуска некоторого потока мониторинга.

  2. Создание WindowService, который отслеживает данные.Даже если вы размещали сайт на стороннем хостинге, создайте веб-сервис, который предоставит вам данные для мониторинга.

  3. Используйте расписание http://quartznet.sourceforge.net Создание задания для мониторинга данных.

Спасибо.

2 голосов
/ 15 января 2012

Джефф Этвуд (соавтор StackOverflow) описывает интересную технику для этого здесь: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

По сути, это угон системы истечения срока действия кэша ASP.NET для выполнения периодических задач по регулярному расписанию.

1 голос
/ 17 января 2012

Другим способом может быть использование метода Application_Start Global.asax . Подробнее см. на этой странице .

protected void Application_Start()
{
    //code your initial request to start the task
    //use a thread to start the task in the background
}

Затем вы можете на некоторое время перевести рабочий поток в спящий режим, а затем время от времени возвращать его в рабочее состояние.

0 голосов
/ 15 января 2012

Поскольку служба не будет обслуживать запросы, а будет выполнять фоновую задачу, я думаю, что служба Windows будет хорошим выбором. Вы можете настроить его на автоматический запуск при запуске. (Я полагаю, у вас есть веб-сервер).

...