当前位置: 首页 > 编程语言 > C#

如何每24小时在Asp.net MVC中执行一个方法分享

时间:2023-04-10 15:07:25 C#

C#学习教程:如何在Asp.netMVC中每24小时执行一个方法每24小时。我可以安排上述方法每24小时执行一次。我知道我们可以使用sqlserveragent和windowstaskscheduler设置时间表。但是由于一些问题我只想执行当前的dll,这在M??VC中可能吗?可能的?也许,在调用任务和后台线程时有点hack。可靠的?丝毫没有。Web应用程序本质上是一个请求-响应系统。应用程序接收请求、执行其逻辑并返回响应。除此之外,它是空闲的。如果Web服务器想要使用或释放??内存,则可以完全卸载Web服务器的内存。要在没有用户交互的情况下定期运行某些东西(即没有启动它的请求),Web应用程序不是您想要的。相反,您正在寻找一个Windows服务,或者一个简单的控制台应用程序,它被主机系统的计划软件(Windows任务计划程序、cron等)计划为定期运行。当然,这些应用程序可以轻松共享代码。它们可以在同一个解决方案中,并且可以引用同一个类库。事实上,代码的应用层应该尽可能薄,所有有意义的代码都在一个共享的业务逻辑程序集中。然后任何应用程序(Web应用程序、Windows服务、控制台应用程序等)都可以简单地引用这些共享程序集并调用相同的逻辑。此外,多个正在运行的应用程序可以轻松共享相同的数据。它们都连接到同一个数据库(当然使用共享数据访问逻辑),并且基本上是集中逻辑的相同表示,只是恰好被不同的应用程序实例调用。正如每个人所说,为了可靠性等原因,在.netWeb应用程序中长时间运行后台进程不是一个好习惯。您可以创建一个外部触发器,每24小时调用一次MVC操作方法。因此,您每24小时执行一次代码。有多种方法和服务可以做到这一点,我使用了不同的方法和服务。或者,如果您不想使用第三方,您可以创建自己的。例如,您可以使用pingdom.com免费帐户每隔一段时间调用某个URL。所以在pingdom中你可以输入你的MVC操作的URL。http://domain/controller/action这将每24小时调用一次,您的代码将按计划运行。更新:最近我一直在使用Azure调度程序,它是为这样的场景而构建的。https://azure.microsoft.com/en-us/services/scheduler/使用系统;使用System.Collections.Generic;使用System.Linq;使用System.Web;使用System.Web.Security;使用System.Web。会话状态;namespaceProposal_Sln{publicclassGlobal:System.Web.HttpApplication{protectedvoidApplication_Start(objectsender,EventArgse){System.Timers.Timertimer=newSystem.Timers.Timer();计时器.间隔=1000;定时器。Elapsed+=timer_Elapsed;定时器。开始();}privatevoidtimer_Elapsed(objectsender,System.Timers.ElapsedEventArgse){Models.Proposal_DBEntitiesDB=newModels.Proposal_DBEntities();Models.tbl_YearY=newModels.;tbl_Year()Y.YearName="13"+DateTime.Now.Second.ToString();DB.tbl_Year.Add(Y);DB.SaveChanges();}}}它工作正常,这听起来像是来自Revalee用例的一个很好的例子。Revalee是一个旨在处理这种情况的开源项目。它使用Windows服务来管理任务持久性和调度,但利用Web应用程序来处理处理。在您的情况下,您可以安排服务每24小时调用一次SendEmail操作。以下是使用Revalee的Web应用程序的工作流程:RevaleeWorkflowhttp://sofzh.miximages.com/c%23/workflow.png免责声明:我是参与Revalee项目的开发人员之一。但需要明确的是,Revalee是免费的开源软件。GitHub上提供了源代码。我同意@David的观点,在Web应用程序中运行后台任务本质上是不可靠的,但在某些情况下它是有意义的。我建议先阅读这篇优秀的文章,http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/使用.NET4.5.2,您可以利用HostingEnvironment,如本文所述:http://blog.mariusschulz.com/2014/05/07/scheduling-background-jobs-from-an-asp-net-application-in-net-4-5-2引用它,“HostingEnvironment.QueueBackgroundWorkItem方法允许您安排小的后台工作项目。ASP.NET跟踪这些项目并防止IIS突然终止工作进程,直到所有后台工作物品齐全。”但同样,这不是一个好的做法,如果使用它,应该非常明智地使用它。这是一个从Windows服务发送电子邮件的简单教程。您可以使用相同的数据库...等。http://www.codeproject.com/Tips/704008/Send-Auto-Notification-Using-Windows-Service以上是C#学习教程:HowtoexecuteamethodinAsp.netMVCevery24hours分享所有内容,如果对大家有用,需要详细了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: