我在MVC中有一个方法,类似于:
public void Sendmails()
{
//sending mails for every 24 hours.
}
我能否安排上述方法每24小时执行一次。 我知道我们可以使用SQL Server代理和Windows任务计划程序设置计划。 但由于某些问题,我只想执行当前的dll,这在MVC中可行吗?
我在MVC中有一个方法,类似于:
public void Sendmails()
{
//sending mails for every 24 hours.
}
我能否安排上述方法每24小时执行一次。 我知道我们可以使用SQL Server代理和Windows任务计划程序设置计划。 但由于某些问题,我只想执行当前的dll,这在MVC中可行吗?
众所周知,在您的.NET Web应用程序中执行长时间运行的后台进程不是一个好的实践,因为会影响可靠性等方面。
您可以创建一个外部触发器,每24小时调用您的MVC操作方法。因此,您每24小时执行一次代码。有多种方法和服务可用于此,我已经使用了不同的服务。或者,如果您不想使用第三方服务,则可以自己创建。
例如,您可以使用pingdom.com的免费帐户来每<输入时间>
周期调用特定的URL。因此,在pingdom中,您可以输入指向MVC操作的URL。
http://domain/controller/action
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
namespace Proposal_Sln
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.Elapsed+=timer_Elapsed;
timer.Start();
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Models.Proposal_DBEntities DB = new Models.Proposal_DBEntities();
Models.tbl_Year Y = new Models.tbl_Year();
Y.YearName = "13" + DateTime.Now.Second.ToString();
DB.tbl_Year.Add(Y);
DB.SaveChanges();
}
}
}
它的工作表现不错。
SendEmail
操作。