C# 中web如何定时同步数据
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
之前做定时器同步方法试过很多方法, 不过都有些问题: 1)quartz + IIS 方式(web项目发布到IIS上,出现IIS应用池回收问题) 2)用线程Timer方式 (出现多个线程同步同个任务问题) 3)window计划任务+ api方法 方式 4)quartz+ window服务(暂不到怎么弄) 最后确定用第(3)种方式,解决了定时同步数据问题。 假如我们需要每隔5分钟定时同步数据,那么做一个api 同步方法映射到外部可调用,然后用window计划任务做一个任务,定时调用批处理文件(文件包含调用api方法的语法)。我这边做一个每隔5分钟调用方法获取数据demo: 1、api方法 ///
/// 获取配送点列表(收货客户或送货客户) ///
/// 传递数据
///
[System.Web.Http.HttpPost]
public string GetDeliveryPointList([FromBody] JObject obj) {
MobileResult result = myService.GetDeliveryPointList(obj);
return JsonConvert.SerializeObject(result);
} 注意:这个方法外部可通过ajax调用的到,如果是要同步数据,那边方法改成可同步数据方法。 2、配置curl表达式 @echo off curl --data "PAGE_NUM=1&ROW_NUM=5" http://14.23.113.2:9698/api/IPhoneApp/MobileApp/GetDeliveryPointList/1 | iconv -f utf-8 -t gbk >>D:\Sync\SyncFuns_log.txt exit 将1(curl.exe)文件复制到C:\Windows\System32\目录下,将2(libiconv.exe)安装后,将安装路径添加到环境变量Path中 , C:\Program Files (x86)\GnuWin32\bin ,将上面curl表达式保存成批处理文件(SyncFuns.bat) 4、创建window计划任务 1)创建基本任务 1.1)常规(选中圈中的的内容) 1.2)触发器 新增触发器,选中重复任务间隔5分钟,持续时间为无限期 1.3)操作 新增任务,选中批处理文件(SyncFuns.bat) 1.4) 条件 电源记得去掉,如果电脑没插电源,计划任务不会触发 5、启用计划任务 查看运行结果:
该文章在 2021/3/8 9:23:34 编辑过 |
关键字查询
相关文章
正在查询... |