C# 是否在asp.net应用程序中运行任务计划?

C# 是否在asp.net应用程序中运行任务计划?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个asp.net应用程序,它需要每隔5分钟调用一个API,才能从服务器获取最新数据。目前,我们计划1)构建一个控制台应用程序,然后使用windows server任务调度器进行调度;或者,2)为此构建windows服务 是否可以在asp.net应用程序中执行此操作?如果是,如何进行 我们只是想看看是否有更好的解决方案 谢谢从.NET 4.5.2开始,有一个QueueBackgroundWorkItemAPI,允许您创建自己的重复任务实现()。不过,我建议您看看一些流行的、更成熟的开源库。最

我有一个asp.net应用程序,它需要每隔5分钟调用一个API,才能从服务器获取最新数据。目前,我们计划1)构建一个控制台应用程序,然后使用windows server任务调度器进行调度;或者,2)为此构建windows服务

是否可以在asp.net应用程序中执行此操作?如果是,如何进行

我们只是想看看是否有更好的解决方案


谢谢

从.NET 4.5.2开始,有一个
QueueBackgroundWorkItem
API,允许您创建自己的重复任务实现()。不过,我建议您看看一些流行的、更成熟的开源库。最受欢迎的人

通过Nuget(
PM>安装程序包Hangfire
)安装并使用ASP.NET MVC应用程序进行如下配置后:

public void Configuration(IAppBuilder app)
{
    GlobalConfiguration.Configuration.UseSqlServerStorage("<connection string or its name>");

    app.UseHangfireDashboard(); //optional
    app.UseHangfireServer(); 
}
Hangfire的另一个优点是,它有一个非常完善的报告功能,允许您监控计划任务:


从.NET 4.5.2开始,您可以看到。

的更多屏幕截图。有一个
QueueBackgroundWorkItem
API,允许您创建自己的重复任务实现()。不过,我建议您看看一些流行的、更成熟的开源库。最受欢迎的人

通过Nuget(
PM>安装程序包Hangfire
)安装并使用ASP.NET MVC应用程序进行如下配置后:

public void Configuration(IAppBuilder app)
{
    GlobalConfiguration.Configuration.UseSqlServerStorage("<connection string or its name>");

    app.UseHangfireDashboard(); //optional
    app.UseHangfireServer(); 
}
Hangfire的另一个优点是,它有一个非常完善的报告功能,允许您监控计划任务:


您可以看到更多的屏幕截图。

ASP.Net实际上是为用户提供HTML用户界面。由于您想要的解决方案不需要用户界面,因此将其创建为ASP.Net应用程序会使安装和维护应用程序的工作变得更加困难

讨论ASP.NET中重复执行后台任务的危险,其中包括如何执行的示例。 可能最好使用一个库,比如避免自己做


作为另一个选项,您甚至可以创建由任务调度器启动的powershell脚本。

ASP.Net实际上是为用户提供HTML用户界面。由于您想要的解决方案不需要用户界面,因此将其创建为ASP.Net应用程序会使安装和维护应用程序的工作变得更加困难

讨论ASP.NET中重复执行后台任务的危险,其中包括如何执行的示例。 可能最好使用一个库,比如避免自己做

作为另一个选项,您甚至可以创建由任务计划程序启动的powershell脚本。

您可以通过asp.net应用程序使用
System.Threading.Timer
(或带有
task.Delay
的异步循环)执行此操作,只要您在编写失败代码时假设您的应用程序可能在任何时候被宿主环境终止。如果您的定期任务特别密集,这可能会对web服务器及时处理请求的能力产生有害影响。您可以使用
System.Threading.Timer
(或使用
task.Delay
的异步循环)从asp.net应用程序执行此操作,只要您在编写失败代码时假设您的应用程序可能在任何时候被宿主环境终止。如果您的定期任务特别密集,这可能会对web服务器及时处理请求的能力产生有害影响。