常见FAQ
# 插件加载成功与否确认
# 浏览器访问Web
当我们通过浏览器访问Web时,才会激活底层核心路由中间件加载所有插件,这是加载插件的首要前置时机
# Debug级别详细日志输出
通过修改平台日志配置文件最小化日志级别,确认日志文件是否已输出注册插件服务即插件里Startup中的ConfigureServices方法和构建插件管道即插件里Startup中的Configure方法。
我们通过如下日志文件输出举个栗子,注册插件服务【Ganweisoft.IoTCenter.Module.Login】耗时:2041ms,代表已调用插件Ganweisoft.IoTCenter.Module.Login中的ConfigureServices方法注册服务且耗时2s左右。构建插件管道【Ganweisoft.IoTCenter.Module.Login】耗时:59ms,代表已调用插件Ganweisoft.IoTCenter.Module.Login中的Configure方法构建管道且耗时59毫秒。
注意事项:若无开发的插件名称输出,说明插件名称不满足约定规范不予加载(插件名称必须包含IoTCenter.Module且拼写正确)。
# 插件加载异常
排除开发的插件启动有Bug,需自行排查外,若插件引入了额外的依赖则会导致插件解析异常从而可能会阻塞平台无法正常启动。
# 获取Web API程序运行目录错误
使用Application.BaseDirectory位于命名空间IoTCenterCore.Modules,而非AppContext.BaseDirectory。
# 上下文连接数据库异常
请勿删除默认模板中对EF Core上下文连接数据库服务的自动注册,否则将抛连接数据库等异常影响插件业务。
# 数据库存储日期或界面显示日期错误
# 日期参数格式传递错误
前端传递日期类型参数到后台时,不能携带如下时区部分格式时间:
无时差UTC时间即带Z的格式:'2023-11-10T05:00:00.000Z'
±HH:mm时区格式:'2023-11-10T05:00:00+05:00'
# 数据库日期格式类型错误
针对PostgreSQL、GaussDB、KingbaseES数据库日期类型应指定:timestamp without time zone。
# 如何扩充语言
默认仅支持中文和英文,我们可以通过程序运行目录配置文件appsettings.json下Localization节点新增扩充语言支持。
比如我们要扩充繁体,配置如下:
# 如何获取当前请求文化名称
使用CultureInfo.CurrentUICulture.Name,获取到的名称将是比如zh-CN,en-US等。
# 接口请求防 SQL注入特殊字符限制
若接口请求时响应:请求参数存在非法字符,说明请求存在基本的 SQL特殊字符等等,此时 根据实际情况分析,若不存在防SQL注入情况,可在接口 Action 上增加[skipCustomFilterAttribute]特性忽略此校验限制
例如:
[skipCustomFilterAttribute]
[HttpPost]
public async Task<operateResult> CreateAsync([rromBody]CreateAppRequest reguest)
{
}