在上南昌静配项目时,因舱内电脑系统为windows版本,无法部署我们常用的安卓版本的平板系统,故只能另外单独写一套windows的舱内计费程序来部署。
程序部署后,实施反馈有些机器在调用his计费接口时总是不成功,无法计费 。经现场人员检查,部署的程序版本一致,那应该问题出在机器本身,添加调用日志后,取出入参条件和返回结果进行分析,得知有些机器本身的系统时间与当前正确时间存在巨大差距(个别机器系统时间竟相隔2年之久),传给his的入参操作时间就有问题了,接口自然而然就无法调用成功。
因为程序需要对机器时间进行处理
方法一:修改本地机器时间,使本地时间与服务器时间保持一致。(这样只要修改服务器时间即可舱内电脑时间进行统一管理)
1.项目--属性--安全性--勾选启用ClickOne安全设置,如下图所示:

2.打开app.manifest,改为如下图所示内容:

3.将第一步的操作还原,改回去
以上操作完成后,重新生成程序并部署,舱内电脑那边点击程序时就会提示 您要允许未知发布者的此应用对您设备的更改吗?点击是 即可,本地时间即会同步成服务器时间
当然,这里会存在一个问题,有些舱内电脑 并非管理员权限账号登录,而信息科那边出于安全考虑也不会对系统账户给于管理员权限,因此权限不够的账户按上述方法点击程序后,会弹框提示 请求的操作需要提升
那么 就需要用到第2种方法:
程序登录运行后,读取服务器时间,并在界面上实时显示,同时为了保障时间及时有效,添加一个timer事件每隔1分钟从服务器重新同步一次时间。
这样程序涉及到操作系统时间的地方全部用当前服务器时间来替代操作,接口就不会收到时间影响而调用失败,完美解决问题。
