Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC网站中运行计划任务_C#_Asp.net_Asp.net Mvc_Scheduled Tasks - Fatal编程技术网

C# 在ASP.NET MVC网站中运行计划任务

C# 在ASP.NET MVC网站中运行计划任务,c#,asp.net,asp.net-mvc,scheduled-tasks,C#,Asp.net,Asp.net Mvc,Scheduled Tasks,我正在制定一个网站的架构,我遇到了一些我以前从未用ASP.NET做过的事情。我想做的是每晚对数据库表中的实体运行一个查询,以检查日期列,并根据日期执行X或Y操作。基本上我希望一个函数每晚调用一次。我所寻找的一切都将我引向了几个不同的方向,这些方向对于这样一个简单的动作来说似乎非常复杂,或者更倾向于工作排队,而这正是我想要的 欢迎提出任何建议,只需寻找最简单的方法。谢谢 我可以想出三种不同的选择 如果您所做的工作纯粹与数据库相关,那么大多数数据库平台(如Microsoft SQL Server、O

我正在制定一个网站的架构,我遇到了一些我以前从未用ASP.NET做过的事情。我想做的是每晚对数据库表中的实体运行一个查询,以检查日期列,并根据日期执行X或Y操作。基本上我希望一个函数每晚调用一次。我所寻找的一切都将我引向了几个不同的方向,这些方向对于这样一个简单的动作来说似乎非常复杂,或者更倾向于工作排队,而这正是我想要的


欢迎提出任何建议,只需寻找最简单的方法。谢谢

我可以想出三种不同的选择

  • 如果您所做的工作纯粹与数据库相关,那么大多数数据库平台(如Microsoft SQL Server、Oracle等)都能够定期运行。这些作业可以是SQL语句或存储过程。MS SQL Server还允许您从存储过程中调用C#代码,这将非常方便

  • 使用操作系统进行计划。Windows有作业(AT命令的
    ),Unix有作业。您可以安排每晚运行一个可执行文件,它将运行C#代码或SQL代码

  • 编写自己的调度服务。此服务将始终作为Windows服务运行,并定期执行一些代码。查看调度框架,例如,它可以帮助组织一些调度细节


  • 我以前在一个项目上做过这样的事情。我强烈建议,它绝对棒极了,可以将所有代码保存在一个解决方案中(不要与windows服务混淆)。

    糟糕的解决方案(不要使用它):在控制器中创建一个执行该任务的操作,然后在power shell中编写一个简单的get,在task Scheduler中运行脚本。。。但我不建议这样做,更好的解决方案是使用f.e Quartz.net作为f.e.as Windows服务运行。Sql Server有您可以安排的任务。我建议在那里做。你在哪里托管你的应用程序。如果您使用的是Azure Web应用程序(我强烈建议这样做),那么您可以轻松地将Web作业附加到应用程序,并且可以轻松地安排在给定时间运行interval@JesseCarter我们不使用Azure,我们拥有自己的服务器。我同意可能的重复:web服务器作业是接收http请求并返回http响应。如果你想把它用作作业调度程序,你可以找到一种偷偷摸摸的方法,但是。。。你会做错的。使用正确的工具进行作业。ASP.NET MVC(在web服务器上运行的所有东西)不是。我正在做的大部分工作是检查一个名为finish_date的专栏,看看它是否快到一年了。一岁后一周,给店主发邮件说除非更新,否则会被删除。然后在它的“生日”删除它。我不确定你关于使用数据库的第一个建议是否适用,我宁愿避免使用Windows调度器。@Chiggins-你可能可以在存储过程中实现所有这些。SQL Server可以使用存储过程发送电子邮件。剩下的只是基本逻辑。然后使用代理来安排。