Как запланировать [WebMethod] в веб-службах в .net? - PullRequest
2 голосов
/ 15 января 2012

Мне просто нужно немного узнать о веб-сервисах в .net (.asmx и прочее)

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

Я создал [WebMethod] как для кода сканера для запуска, так и для обновления базы данных, если он доступен.

Но я хочу, чтобы это [WebMethod] получилосьавтоматизировать и работает каждые 30 минут?

Ответы [ 2 ]

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

нет необходимости создавать WebMethod для этого, вы можете сделать это на стороне сервера, а для операций по расписанию я всегда использую Quartz.net

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

Я могу ошибаться, но похоже, что вы хотите запланировать фоновую задачу, используя asp.net?Я не использовал Quartz.Net, но сделал это на простом примере, представленном Джеффом Этвудом .Следующий код взят из Global.asax.cs и при запуске приложения планирует повторяющееся задание каждые 60 минут:

void Application_Start(object sender, EventArgs e)
{
    var refreshMinutes = 60;
    AddTask("UpdateInfo", 
            (int)TimeSpan.FromMinutes(refreshMinutes).TotalSeconds);
}

private void AddTask(string name, int seconds)
{
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
    HttpRuntime.Cache.Insert(name, seconds, null,
        DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
        CacheItemPriority.NotRemovable, OnCacheRemove);
}

public void CacheItemRemoved(string key, object v, CacheItemRemovedReason r)
{
    if ("UpdateInfo".Equals(key))
    {
        try
        {
            new SearchService().UpdateInfo();
        }
        catch (Exception ex)
        {
            logger.Error("UpdateInfo threw an exception: {0} {1}", ex.Message, ex.StackTrace);
        }
    }

    AddTask(key, Convert.ToInt32(v));
}

Примечание. Фил Хаак опубликовал сообщение на Опасности реализации повторяющихся фоновых задач в ASP.NET , которая предоставляет некоторые полезные методы для повышения надежности процесса.

...