首页新闻找找看学习计划

asp.net web page razor 定时器怎么做

0
[已解决问题] 解决于 2017-05-24 15:09

asp.net web page razor 定时器怎么做,比如说订单15天自动签收。
我做了一个签收页面AutoReceipt.chtml,代码如下

@{
//发货后15天自动签收
var db = Database.Open("rcdb");
var sql = "SELECT * FROM Orders WHERE Status = 2 and datediff(day,UpdateTime,"+ DateTime.Now +") > 15";
var data = db.Query(sql);
if(data != null){
foreach (var item in data)
{
var updateCommand = "UPDATE Orders SET UpdateTime=@0, Status=@1 WHERE Id=@2";
db.Execute(updateCommand, DateTime.Now, 3, item.Id);
}
}
}

可不可以利用每次打开网站都启动_AppStar.cshtmlt这个来执行AutoReceipt.chtml这个页面

缘分0919的主页 缘分0919 | 初学一级 | 园豆:128
提问于:2017-04-14 20:29
< >
分享
最佳答案
0
//发货后15天自动签收
@functions{
    public static string AutoReceipt()
    {
        var db = Database.Open("rcdb");
        var sql = "SELECT * FROM Orders WHERE Status = 2 and datediff(day,UpdateTime,getdate()) > 15";
        var data = db.Query(sql);
        if (data != null)
        {
            foreach (var item in data)
            {
                var updateCommand = "UPDATE Orders SET UpdateTime=@0, Status=@1 WHERE Id=@2";
                db.Execute(updateCommand, DateTime.Now, 3, item.Id);
            }
        }
        return "";
    }
}

下面是_AppStart.cshtml 页面代码 

@{ 
    //定时一天执行一次
    var dbbackup = Database.Open("backup");
    var sqlAuto = "SELECT * FROM Auto WHERE Id=1 and datediff(day,UpdateTime,getdate()) > 1";
    var Auto = dbbackup.QuerySingle(sqlAuto);

    if (data != null)
    {
        //大于1天执行函数
        razor.AutoReceipt();
    }
}

利用_AppStart.cshtml 访问网站执行一次 和 定时大于一天来检查一次 这样可以减少反复查询数据库

缘分0919 | 初学一级 |园豆:128 | 2017-05-24 15:07
其他回答(1)
0

既然是razor了就不能再用web form那一套了,javascript做比较靠谱了

远扬 | 园豆:86 (初学一级) | 2017-04-15 17:42

 js好像不行吧,只能从打开页面开始计时吧,我想要的是记录服务器时间的那种。第一我想定时每天自动备份数据库。第二我想定时检查订单发货后15天没签收的自动签收。我是用asp.net web page 方式开发的,因为这种程序无论访问任何一个页面都会先访问_AppStart.cshtml这个页面。我就想在这个页面做个定时器。每天执行一次就可以了,免得重复访问数据库。

支持(0) 反对(0) 缘分0919 | 园豆:128 (初学一级) | 2017-04-15 17:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册