Как подать веб-запрос в планировщик задач Windows

У меня есть статический веб-метод т.е. (http://localhost:61176/trunk/MusteriKontrol.aspx/CheckMusteri) Я хочу вызвать этот метод из планировщика заданий Windows. Как мне это сделать?

2 ответа

Вы можете использовать скрипт PowerShell. Здесь есть проверка времени, закомментированный Try..Catch на случай, если вы хотите что-то сделать, если в запросе возникла ошибка, и записи о его выполнении в журнале событий приложения:

# Download the HTML of a web page.
# Make sure an event log source is created with New-EventLog -LogName Application -Source MyPSscript
# Only do this if the time is 5a.m. or later, to give the server a rest from midnight.
$currHour = (Get-Date).Hour
if ($currHour -ge 5) {
    $web = New-Object Net.WebClient
    #try {
        $temp = $web.DownloadString("http://localhost:61176/trunk/MusteriKontrol.aspx/CheckMusteri")
    #}
    #catch {
        # do nothing.
    #}
    write-eventlog -logname Application -source MyPSscript -eventID 1001 -entrytype Information -message "Fetched web page." -category 0
}

Рассматривали другую альтернативу для планирования вызова веб-метода из Windows Task Scheduler?

Например, планирование задач из проекта ASP.NET возможно с помощью проекта с открытым исходным кодом Revalee.

Revalee - это сервис, который позволяет вам планировать обратные вызовы в вашем веб-приложении. В вашем случае вы бы запланировали обратный вызов, который будет вызывать ваш веб-метод в определенное время. Revalee очень хорошо работает с задачами, которые представляют собой отдельные транзакционные действия, такие как обновление некоторых значений базы данных или отправка автоматического сообщения электронной почты (читай: не выполняется долго). Положительным моментом является то, что код, который планирует обратный вызов, а также код, выполняющий ваши действия (т. Е. Ваш веб-метод), будут постоянно находиться в вашем приложении.

Чтобы использовать Revalee, вы бы:

  1. Установите службу Revalee, службу Windows, на свой сервер. Служба Windows доступна в исходном коде (который вы бы скомпилировали самостоятельно) или в предварительно скомпилированной версии, доступной на веб-сайте Revalee.

  2. Используйте клиентскую библиотеку Revalee в вашем проекте Visual Studio. (Существует также специфичная для MVC версия.) Клиентская библиотека доступна в исходном коде (который, опять-таки, вы должны скомпилировать самостоятельно) или в предварительно скомпилированной версии, доступной через NuGet.

  3. Вы зарегистрируете будущий обратный вызов, когда ваш код вызывает ScheduleWebMethodCallback() метод (в этом примере предполагается, что ваше действие должно выполняться через 12 часов).

    private void ScheduleWebMethodCallback()
    {
        DateTimeOffset callbackTime = DateTimeOffset.Now.AddHours(12.0);
    
        // The callback should be in 12 hours from now
        Uri callbackUrl = new Uri(string.Format("http://localhost:61176/trunk/MusteriKontrol.aspx/CheckMusteri"));
    
        // Register the callback request with the Revalee service
        RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
    }
    
  4. Когда Revalee перезванивает ваше приложение, оно будет выполнять любое действие, которое вы его запрограммировали, в веб-методе, который вы перечислили выше.

В случае, если это не было ясно выше, Служба Revalee - это не сторонняя служба стороннего планировщика, а служба Windows, которую вы устанавливаете и полностью контролируете в своей собственной сети. Он расположен и работает на сервере по вашему выбору, скорее всего, на вашем веб-сервере (но это не обязательно), где он может получать запросы регистрации обратного вызова из вашего приложения ASP.NET.

Надеюсь, это поможет.

Примечание. В приведенном выше примере кода используется синхронная версия ScheduleCallback() клиентская библиотека Revalee также поддерживает асинхронные вызовы а-ля:

RevaleeRegistrar.ScheduleCallbackAsync(callbackTime, callbackUrl);

Отказ от ответственности: я был одним из разработчиков, вовлеченных в проект Revalee. Для ясности, однако, Revalee - это бесплатное программное обеспечение с открытым исходным кодом. Исходный код доступен на GitHub.

Другие вопросы по тегам