常见问题
# 常见问题
# 启动IoTCenter服务时报错误“Couldn't find a valid ICU package”
问题现象
错误日志输出示例:
问题原因
当前操作系统缺少ICU包。
ICU 是用于支持 Unicode 的开发包,有些Linux系统做了精简处理,可能移除了ICU,这时需要手动安装。
解决方案
手动安装ICU包,以Debian/CentOS为例,执行命令
yum install icu
:yum install icu
如果看到成功安装的消息即表示软件包已成功安装。
如果无法安装或安装后依然无法解决问题,只能修改项目的配置文件,按照以下步骤操作。
- 打开IoTCenter/bin/GWHost1.runtimeconfig.json配置文件,加入以下的语句
{ "runtimeOptions":{ "configProperties": { "System.Globalization.Invariant": true } } }
- 打开IoTCenter/IoTCenterWeb/publish/IoTCenterWebApi.runtimeconfig.json配置文件,加入以下语句:
{ "runtimeOptions":{ "configProperties": { "System.Globalization.Invariant": true } } }
- 打开IoTCenter/bin/GWHost1.runtimeconfig.json配置文件,加入以下的语句
# 启动IoTCenter服务时报错误“GLIBCXX_3.4.14 not found”
问题现象
错误日志输出示例:
dotnet: /lib64/libstdc++.so.6: version \`GLIBCXX_3.4.21' not found (required by dotnet) dotnet: /lib64/libstdc++.so.6: version \`GLIBCXX_3.4.20' not found (required by dotnet)
问题原因
- 当前操作系统的libstdc++.so.6版本比较旧。
解决方案
检查本地libstdc++.so.6支持的版本:
strings /lib64/libstdc++.so.6 \| grep GLIBC
打印举例:
GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBC_2.17 GLIBCXX_DEBUG_MESSAGE_LENGTH 其中并没有服务要求的GCC版本 “GLIBCXX_3.4.20”,“GLIBCXX_3.4.21”。
检查本地libstdc++.so.6支持的版本:
以Debian或CentOS为例,打开链接:
http://ftp.de.debian.org/debian/pool/main/g/gcc-10/ (opens new window)
选择最新版本的GCC下载到本地,例如:
libstdc++6_4.7.2-5_i386.deb
ARM平台的libstdc++6_10.1.0-4_arm64.deb
解压文件:
ar -x libstdc++6_10.1.0-4_arm64.deb && tar xvf data.tar.xz
拷贝文件并建立软链接:
- 拷贝解压出来的文件
cd usr/lib/aarch64-linux-gnu cp libstdc++.so.6.0.28 /lib64 cd /lib64 rm libstdc++.so.6 //删除原有的链接文件
- 建立新文件的软链接
ln -s /lib64/libstdc++.so.6.0.28 libstdc++.so.6 chmod a+x libstdc++.so.6.0.28
- 拷贝解压出来的文件
检查是否升级成功。
执行
dotnet
命令,检查打印:
# Web登录提示“用户名或密码错误”
问题现象
错误示例:
问题原因
用户名密码输入错误,需确认是否输入正确。
软件未进行数据库升级操作。
软件已执行数据库升级操作,但后期使用中更换了授权文件。
解决方案
核查是否正常输入用户名和密码,发布包中默认存在用户,请联系相关人员获取
核查数据库是否执行了升级加密操作,3.1.11.1版本之后GWUser及GWRole表相关数据需进行升级加密方可正常登录,操作步骤如下。
GWEncrypt.dll加密工具升级:选择选项2进行数据库升级操作,输入y开始执行,执行完成后,输入c退出加密工具,重新登录网页核查能否正常登录。
Web配置自动升级,完成Web客户端appsettings.json如下配置后,首先需启动网关进程,待网关进程成功启动后,再启动Web进程,Web进程启动完成后会自动开始执行升级数据库,升级过程中Web进程时会输出日志,等待5-10S后无日志输出时重新登录网页核查能否正常登录。
核查数据库是否执行了升级加密操作,但是更换了授权文件,如果更换了授权文件,原加密数据将无法解密会导致登录失败,此时需要使用备份数据恢复登录,操作步骤如下。
打开数据库,核查是否存在GWRole_AutoBack和GWUser_AutoBack表
移除GWUser和GWRole表,将GWRole_AutoBack表重命名为GWRole表,GWUser_AutoBack表重命名为GWUser表。
将IoTCenter/IoTCenterWeb/publish/appsettings.json中的IsAesUpdateSuccess修改为false。
执行步骤二中的GWEncrypt.dll或者配置Web重新升级数据库。
# 网页使用HTTP端口44381无法访问问题
问题现象
错误示例:
问题原因
IoTCenter6.0及以后版本默认移除了HTTP端口,只支持HTTPS协议44380。
解决方案
如果需求使用HTTP端口,修改IoTCenter\IoTCenterWeb\publish目录下的appsettings.json文件,找到HttpPort配置项,输入自定义HTTP端口,比如44481,重新启动Web进程即可使用HTTP协议访问Web:
如果看到Web程序启动日志中包括成功以上Listening日志,表示HTTP协议已成功启用了。
# 启动网关和Web程序失败,提示”Access denied for user 'root'@'10.44.78.134' (using password: NO)”
问题现象
网关无法启动,日志中包含Access denied for user 'root'@'10.44.78.134' (using password: NO)拒绝访问
问题原因
- IoTCenter使用MySQL数据库,但是AlarmCenterProperties.xml中Mysql密码配置错误,导致数据库连接失败,程序无法启动。
解决方案
方法一:使用IoTCenter\bin中的加密工具GWEncrypt.dll加密数据库密码更新AlarmCenterProperties.xml中的Mysql数据库密码;配置我呢见或者使用:
重启启动网关程序,核查是否报错。
方法二:检查版本,若使用IoTCenter3.1.14.0版本,数据库升级方式发生变化,默认用户帐号升级变更为通过访问接口升级:/IoT/api/v3/SystemConfig/pdateAesDatabase
注:待页面响应成功信息后即升级成功
# 启动Web程序失败,提示”unable to open database file”
问题现象
启动Web程序后,Web控制台报如下错误,无法打开Sqlite数据库文件
问题原因
- 核查IoTCenter\data\AlarmCenter\AlarmCenterProperties.xml中的数据库路径是否正确。
- 核查数据库文件是否损坏。
解决方案
核查IoTCenter\data\AlarmCenter\AlarmCenterProperties.xml中的数据库路径是否正确。
核查数据库文件是否损坏,如损坏则无法继续使用此数据库,需要使用产品发布包中的默认数据库,注意:SQLite数据库极易损坏,项目中不推荐使用SQLite数据库,推送使用MySQL数据库。
# 使用mysql数据库报错,提示 ”max_allowed_packet”
问题现象
使用mysql数据库在应用商店下载插件。
问题原因
- mysql默认加载的数据文件不超过1M
解决方案
修改mysql配置文件Windows:my.ini;Linux:my.cnf找到max_allowed_packet 字段,修改其值为200M。
在客户端连接使用:
show VARIABLES like '%max_allowed_packet%'
脚本进行查看max_allowed_packet与slave_max_allowed_packet都会变大。show VARIABLES like '%max_allowed_packet%'
# App连接失败,提示“未连接上服务!”
问题现象
在app上输出ip、用户名及密码后,点击登录,提示“未连接上服务!”
问题原因
- 默认情况下对web浏览器访问安全会做访问源限制,但若应用程序若运行在app内,不存在安全问题,除非攻击app自身,所以需做配置修改。
解决方案
修改IoTCenter/IoTCenterWeb/publish/下的appsettings.json文件中的配置,如下图:
"AllowOrigins": ["\*" ] web和app都可访问,无限制; "AllowOrigins": [ "https://localhost:44380", "http://localhost:44381" ]只能通过web访问。
# 服务启动正常,但HTTPS Web连接不上
问题现象
备注:出现在6.0及其之后的版本上,为解决了华为EBG安全问题的版本。
通过HTTPS Web无法加载登录界面:
IoTCenterWebApi的日志中有SslStream的报错,示例如下:
问题原因
访问Web的主机是Windows7主机,其本身只缺省支持TLS1.1版本,而IoTCenter经EBG安全测试后已升级到默认只支持TLS1.2。所有在Windows7主机上,通过浏览器无法访问IoTCenter HTTPS网站。
解决方案
方案一:IoTCenter启用HTTP协议,然后通过HTTP协议访问IoTCenter。
方案二:配置Windows7启用TLS1.2版本。
请参考微软官方方法:
可到以下网址下载Windows7的更新包:
http://catalog.update.microsoft.com/v7/site/search.aspx?q=kb3140245 (opens new window)
# 授权文件损坏
问题现象
服务器硬件改变会导致软件登录提示无授权,如当时注册时是双网卡开启,后来禁用了一张网卡或换了网卡、内存等硬件。
问题原因
授权时间过期。
解决方案
更换授权文件
IoTCenter软件最高权限管理员给出最新的授权文件后放置到opt/ganwei/IoTCenter/bin中。