C# 安排MVC4-C在特定时间调用函数

C# 安排MVC4-C在特定时间调用函数,c#,sms,asp.net-mvc-4,scheduling,C#,Sms,Asp.net Mvc 4,Scheduling,我是MVC4的新手,这是我关于这项技术的第一个项目,我浏览了 该网站声称销售预付费产品。 数据库包含用户、经销商、供应商等表格 我正试图安排我的系统 例如,每天晚上23:59,将调用一个特定函数,并从数据库中检索满足特定查询的所有用户名和密码 我还需要在某个日期前发送短信,我在表中指定了一个单独的列,该列将在服务结束时保持发出的警报 我很想听到一些想法,以及如何开始干扰系统调度或具体想法的实现 谢谢并请原谅我的英语。您需要在MVC项目之外作为一个单独的组件进行计划。通常,您会创建一个始终在IIS

我是MVC4的新手,这是我关于这项技术的第一个项目,我浏览了

该网站声称销售预付费产品。 数据库包含用户、经销商、供应商等表格

我正试图安排我的系统

例如,每天晚上23:59,将调用一个特定函数,并从数据库中检索满足特定查询的所有用户名和密码

我还需要在某个日期前发送短信,我在表中指定了一个单独的列,该列将在服务结束时保持发出的警报

我很想听到一些想法,以及如何开始干扰系统调度或具体想法的实现


谢谢并请原谅我的英语。

您需要在MVC项目之外作为一个单独的组件进行计划。通常,您会创建一个始终在IIS服务器(或其他服务器)上运行的Windows服务项目,其中包括一个计时器,用于按指定的计划启动不同的任务。您可以在数据库中创建一个配置文件或表,其中包含计划和其他执行信息,并从服务中查询此文件或表。

在服务器上使用单独的windows服务,在计划时间运行怎么样?我个人已经实现了这一点,而且效果很好。

最后我在全球asax中实现了这一点。我不知道这是否是最好的方法,但它能起作用

这是代码

protected void Application_Start()
    {
        try
        {

           .
           .
           .
            SetTimer();
        }
        catch (Exception ex)
        {
            ...
        }
    }


    private static void SetTimer()
    {
        DateTime tomorow = DateTime.Now.AddDays(1);
        DateTime midnight = new DateTime(tomorow.Year, tomorow.Month, tomorow.Day, 0, 0, 0);
        TimeSpan d = midnight - DateTime.Now;

        sTimer.Enabled = true;
        sTimer.Interval = d.TotalMilliseconds;
        sTimer.Elapsed += new System.Timers.ElapsedEventHandler(sTimer_Elapsed);
        sTimer.Start();
    }

    static void sTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        sTimer.Interval = TimeSpan.FromHours(24).TotalMilliseconds;
        db = new CompanyContext();

        //some func
        sendInOutUsers();            
        AlartUsers();
    }

从web服务调用my function?您可以共享一个程序集,其中包含希望每隔一段时间运行的函数和希望按需运行的函数。这将允许您的windows服务器在午夜执行其功能,并允许您的网站立即执行其功能。密码应为单向哈希。。您应该无法判断密码是否符合特定标准。如果您不这样做,那么您就是一个严重的安全隐患,您可以在部署之前通过在其他地方(可能是您自己的开发工作站)安装服务进行测试。理想情况下,您需要有一个设置为模拟生产的测试环境。