升级2sxc至17.9/18.6.1后DNN编辑模式失效(类型加载异常)
升级2sxc至17.9/18.6.1后DNN 9.11.2编辑模式崩溃,TypeLoadException错误
问题描述
在DNN 9.11.2环境下,先后将2sxc从17.8版本升级到17.9,再升级至18.6.1后,编辑模式无法正常工作,日志中立即抛出以下错误:
System.TypeInitializationException:
DotNetNuke.ExtensionPoints.ExtensionPointManager
---> System.TypeLoadException:
Could not load type ToSic.Eav.Documentation.PublicApi
from assembly ToSic.Eav.Core, Version=17.9.0.0
预期行为:编辑模式正常打开,可编辑内容
实际行为:编辑模式直接崩溃,抛出上述错误
已尝试的解决方法:
- 重新部署程序集(清空bin文件夹并复制全新DLL)
- 检查并清理遗留的旧版本ToSic.Eav.Core.dll
- 清除站点缓存并重启站点
问题:升级2sxc后出现该TypeLoadException的原因是什么?如何修复以恢复编辑模式?
原因分析
- 版本绑定混乱:DNN程序集加载器仍尝试加载17.9.0.0版本的
ToSic.Eav.Core.dll,但该版本中ToSic.Eav.Documentation.PublicApi类型已被移除、重命名或修改,导致加载失败。 - 跨版本升级残留:从17.8直接跨版本升级到18.6.1时,中间版本的依赖未被完全清理,部分关联程序集未正确替换。
- 扩展点缓存残留:
ExtensionPointManager初始化失败,说明DNN的扩展点注册缓存未彻底清除,仍保留指向旧2sxc类型的引用。
修复步骤
1. 彻底清理程序集与缓存
- 停止DNN站点,删除
bin文件夹内所有ToSic.*开头的DLL文件。 - 从2sxc 18.6.1安装包中提取所有
ToSic.*程序集,复制到bin文件夹。 - 删除DNN缓存目录:
Portals\_default\Cache、App_Data\Cache,同时清空服务器.NET临时缓存(路径示例:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files,根据实际.NET版本调整)。
2. 修复程序集绑定重定向
检查站点根目录web.config,确保所有2sxc相关的程序集绑定重定向指向18.6.1版本,示例:
<dependentAssembly> <assemblyIdentity name="ToSic.Eav.Core" publicKeyToken="28748230e94c6a7f" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-18.6.1.0" newVersion="18.6.1.0" /> </dependentAssembly>
缺少则手动添加,存在旧版本重定向则更新为18.6.1。
3. 重新注册2sxc扩展
- 启动站点,以超级管理员身份进入Host > Extensions页面。
- 找到2sxc扩展,点击Reinstall,选择“仅覆盖文件”选项完成重新安装。
- 重启站点后测试编辑模式。
4. 手动清理DNN扩展点缓存
若上述步骤无效,执行以下操作:
- 打开SQL Server数据库,找到
ExtensionPoints表,删除所有名称包含2sxc或ToSic的条目。 - 重启站点,DNN会自动重新注册2sxc扩展点。
内容的提问来源于stack exchange,提问作者MBouwman
相关产品推荐
相关产品推荐

