Kentico Custom Table数据编辑异常:保存后加载卡顿及部分记录未保存
我之前维护Kentico项目时也碰到过几乎一模一样的问题——部分自定义表格里的少数记录保存后会卡在加载界面,得重新调整内容才能成功保存。结合排查经验,这些是最可能的成因:
字段验证/格式不匹配:
重点检查有问题的记录的字段值,尤其是日期、数字、关联对象类字段。比如日期格式不符合后台设置(比如用了MM/DD/YYYY但系统要求DD/MM/YYYY),或者关联的页面/对象已经被删除,导致后台验证失败但前端没弹出明确提示,就一直卡在加载状态。少数记录刚好踩中了这些验证规则的红线,调整后就符合要求了。自定义保存事件的未捕获异常:
如果这些异常的Custom Table配置了自定义的BeforeSave或AfterSave事件钩子(比如在CMSModules/CustomTables/CustomTableItemEvents.cs里写的逻辑),要排查代码是否在特定记录下抛出了未捕获的异常。比如处理某个字段时,没判断空值就直接调用方法,少数记录刚好这个字段为空,导致保存流程中断,前端就一直处于加载等待状态。数据库约束冲突:
查看对应Custom Table的数据库表是否有自定义的外键约束、唯一约束。当保存的记录违反这些约束时(比如重复了唯一字段的值,或者外键指向的记录不存在),数据库会返回错误,但Kentico后台可能没正确捕获并反馈给前端,导致界面卡住。另外,数据库锁等待也可能导致这个问题——比如其他进程正在操作这条记录,保存请求超时。字段内容溢出:
检查文本类型字段的最大长度设置,少数记录的内容可能刚好超过了设定的长度限制。第一次保存时后台处理溢出错误,但前端没有给出提示,就卡在加载界面,缩短内容后就能正常保存。缓存或会话异常:
Kentico对Custom Table数据有内置缓存,少数记录的缓存可能出现了数据不一致的情况,导致保存后刷新缓存时卡住。另外,用户会话在保存过程中出现异常(比如会话超时、数据丢失),也可能导致请求无法正常完成,界面一直加载。
内容的提问来源于stack exchange,提问作者Alireza A

