【问题标题】:Could a windows scheduled task connect to a rest endpoint?Windows 计划任务可以连接到休息端点吗?
【发布时间】:2014-10-15 14:46:17
【问题描述】:

我有一个用 ASP.NET Web API 编写的休息服务。

我想要一个计划任务连接到一个端点,例如:

www.example.com/jobs/job1

我希望能够将间隔时间设置为每 12 小时一次。

是否可以通过计划任务执行此操作?

我想避免仅仅为了 ping 一个休息端点而创建一个 Windows 服务。

【问题讨论】:

  • 我不确定您是否可以直接从任务中执行此操作,但您可以创建一个简单的控制台应用程序(甚至是带有ping 的批处理文件?)并让任务执行每个12 小时。

标签: c# asp.net-mvc asp.net-web-api scheduled-tasks


【解决方案1】:

您可以使用 PowerShell 和 System.Net.WebClient 轻松完成此操作。

创建一个简单的MyScriptName.ps1 文件,内容如下:

$web = New-Object System.Net.WebClient
$str = $web.DownloadString("http://www.example.com/jobs/job1")
$str # not strictly necessary but if you run this in PowerShell you will get the response body of your endpoint

然后创建一个新的计划任务并向Start a program 添加一个新操作并使用以下设置:

Program/script: powershell
Add arguments: .\MyScriptName.ps1
Start in: C:\The\Directory\You\Saved\Your\Script\In

【讨论】:

  • 酷。如果我更新 .ps1 文件,我是否必须更新计划任务,否则它将始终获取最新的更改?
  • 您对脚本所做的任何更改都将在下次任务运行时生效。
【解决方案2】:

从 PowerShell 3.0 开始,您可以使用 Invoke-RestMethod cmdlet。

Invoke-RestMethod -Uri "www.example.com/jobs/job1"

这里的优点是,如果它是 XML 或 JSON,它将为您反序列化为一个对象。对于 RSS 或 ATOM,它将返回 Item 或 Entry XML 节点。对于文本,它将显示文本。

您可以在此处阅读更多内容: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/invoke-restmethod

使用以下详细信息创建计划任务:

触发:每天,在您选择的时间,重复 12 小时,持续 1 天。

动作:

启动程序:powershell

参数:-NoProfile -NonInteractive -File ".\YourScriptName.ps1"

开始于:C:\your_scripts

鉴于您已经创建了一个对象,您可以选择任何方式格式化此数据,但这超出了本问题的范围。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多