如何向Windows任务计划程序发出Web请求

时间:2014-05-05 11:06:49

标签: asp.net windows scheduled-tasks job-scheduling

我有一个静态web方法,即(http://localhost:61176/trunk/MusteriKontrol.aspx/CheckMusteri)我想从Windows任务计划程序调用此方法。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用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
}

答案 1 :(得分:0)

是否考虑过从Windows任务计划程序安排调用Web方法的其他替代方法?

例如,使用Revalee开源项目可以在ASP.NET项目中安排任务。

Revalee是一项服务,允许您安排Web回调到您的Web应用程序。在您的情况下,您将安排一个回调,该回调将在特定时间调用您的Web方法。 Revalee非常适用于离散事务操作的任务,例如更新某些数据库值或发送自动电子邮件消息(读取:不长时间运行)。好处是,安排回调的代码以及执行您的操作的代码(即您的Web方法)都将驻留在您的应用程序中。

要使用Revalee,您会:

  1. 在服务器上安装Revalee Service(Windows服务)。 Windows服务在源代码(您可以自己编译)或Revalee website中提供的预编译版本中提供。

  2. 在Visual Studio项目中使用Revalee客户端库。 (还有一个特定于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重新调用您的应用程序时,您的应用程序将执行您在上面列出的Web方法中对其进行编码的任何操作。

  5. 如果上面不清楚,Revalee服务不是外部第三方在线调度程序服务,而是安装在您自己的网络上完全控制的Windows服务。它驻留在您自己选择的服务器上并运行,很可能是您的Web服务器(但这不是必需的),它可以从ASP.NET应用程序接收回调注册请求。

    我希望这会有所帮助。

    注意:上面的代码示例使用ScheduleCallback()的同步版本,Revalee客户端库也支持异步调用àla:

    RevaleeRegistrar.ScheduleCallbackAsync(callbackTime, callbackUrl);
    

    免责声明:我是参与Revalee项目的开发人员之一。但需要明确的是,Revalee是免费的开源软件。源代码可在GitHub上找到。