Asp.net 如何向windows任务计划程序发出web请求

Asp.net 如何向windows任务计划程序发出web请求,asp.net,windows,scheduled-tasks,job-scheduling,Asp.net,Windows,Scheduled Tasks,Job Scheduling,我有一个静态webmethod,即(http://localhost:61176/trunk/MusteriKontrol.aspx/CheckMusteri)我想从Windows任务计划程序调用此方法。我该怎么做 您是否考虑过一种不同的方法来调度Windows任务调度器对web方法的调用 例如,可以使用开源项目从ASP.NET项目中安排任务 Revalee是一项服务,允许您计划对web应用程序的web回调。在您的例子中,您将安排一个回调,该回调将在特定时间调用您的web方法。Revalee可以

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

您是否考虑过一种不同的方法来调度Windows任务调度器对web方法的调用

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

Revalee是一项服务,允许您计划对web应用程序的web回调。在您的例子中,您将安排一个回调,该回调将在特定时间调用您的web方法。Revalee可以很好地处理离散事务操作的任务,比如更新一些数据库值或发送自动电子邮件消息(阅读:不长时间运行)。这样做的好处是,调度回调的代码以及执行您的操作的代码(即web方法)都将驻留在您的应用程序中

要使用Revalee,您需要:

  • 在服务器上安装Revalee服务,即Windows服务。Windows服务的源代码(您可以自己编译)或预编译版本中都可以找到,这些版本可以在网站上找到

  • 在VisualStudio项目中使用Revalee客户端库。(还有一个特定于MVC的版本。)客户机库可以在源代码中找到(同样,您可以自己编译),也可以在通过提供的预编译版本中找到

  • 当您的代码调用
    ScheduleWebMethodCallback()
    方法时,您将注册一个将来的回调(本例假设您需要您的操作从现在开始运行12小时)

  • 当Revalee回调您的应用程序时,您的应用程序将执行您在上面列出的web方法中编写的任何操作

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

    我希望这有帮助

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

    RevaleeRegistrar.ScheduleCallbackAsync(callbackTime, callbackUrl);
    
    免责声明:我是参与Revalee项目的开发人员之一。不过,要明确的是,Revalee是免费的开源软件。源代码在上提供。

    您可以使用脚本。这有一个时间检查,一个注释掉的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
    }
    
    # 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
    }