Orchard v1.10.1.0中Image Field类型消失及数据库恢复启动失败求助
问题描述
- 无法向内容类型定义添加Image Field(图片字段),该类型未出现在字段类型下拉列表(仅显示Boolean Field、Content Picker Field、DateTime Field等选项)
- 生产环境(prod)中该字段类型正常显示,生产与开发环境使用相同二进制文件,仅数据库内容存在差异(理论上)
- 开发环境(dev)启动后无法显示图片,仅静态图片可正常加载
- 将生产环境数据库恢复至开发环境后,Orchard无法启动,抛出以下异常:
Cannot perform runtime binding on a null reference Orchard.DisplayManagement.Descriptors.ShapeAttributeStrategy.ShapeAttributeBindingStrategy.PerformInvoke(DisplayContext displayContext, MethodInfo methodInfo, Object serviceInstance) in \Orchard\DisplayManagement\Descriptors\ShapeAttributeStrategy\ShapeAttributeBindingStrategy.cs:73
Orchard版本:v1.10.1.0
排查与解决步骤
1. 检查核心模块启用状态
开发环境中,确认Orchard.MediaLibrary和Orchard.Fields模块已启用:
- 登录后台进入「模块」页面,搜索这两个模块,确保状态为「已启用」
- 若未启用,启用后重启应用,查看图片字段是否恢复
2. 验证媒体库配置
开发环境媒体库路径或权限可能异常:
- 进入
Settings > Media,检查媒体存储路径是否正确,确认该目录存在且应用程序拥有读写权限 - 对比生产环境的媒体库配置,保持参数一致
3. 排查数据库配置表差异
即使仅内容不同,也可能存在配置表数据缺失:
- 对比生产与开发环境的
Settings_ContentDefinitionRecord、Fields_ImageFieldSettingsRecord等相关配置表,确保开发环境的字段类型定义未丢失 - 若开发环境这些表数据缺失,可从生产环境同步对应数据(操作前务必备份开发库)
4. 修复数据库恢复后的启动异常
恢复生产库后出现空引用异常,多因环境配置不匹配:
- 检查开发环境
App_Data/Sites/[SiteName]/Settings.txt配置,确保与生产环境的站点配置一致,重点关注媒体库、模块启用状态相关项 - 清理开发环境
App_Data/Temp目录下的缓存文件,重启应用 - 若异常仍存在,重新部署二进制文件(即使文件相同,也可能存在损坏情况),再尝试启动
内容的提问来源于stack exchange,提问作者Canoff
相关产品推荐
相关产品推荐

