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这个页面
//发货后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 访问网站执行一次 和 定时大于一天来检查一次 这样可以减少反复查询数据库
既然是razor了就不能再用web form那一套了,javascript做比较靠谱了
js好像不行吧,只能从打开页面开始计时吧,我想要的是记录服务器时间的那种。第一我想定时每天自动备份数据库。第二我想定时检查订单发货后15天没签收的自动签收。我是用asp.net web page 方式开发的,因为这种程序无论访问任何一个页面都会先访问_AppStart.cshtml这个页面。我就想在这个页面做个定时器。每天执行一次就可以了,免得重复访问数据库。