DNN(DotNetNuke)迁移至SharePoint相关技术问题咨询
1. DNN全量内容迁移至SharePoint的可行方案
没有官方一键迁移工具,但存在可落地的成熟迁移路径,可实现全量内容迁移:
- 前期先做全量内容盘点:梳理DNN站点的页面层级、用户/角色权限、内置模块内容(HTML文本、新闻公告、表单提交数据)、全量媒体/文档文件、第三方自定义模块的业务数据,提前筛除冗余的历史废弃内容,减少无效迁移工作量。
- 提前做两端内容映射:在SharePoint端预先搭建对应站点架构,配置好文档库、自定义列表、权限组,将DNN的内容类型、字段和SharePoint端做一一对应,比如DNN文章的标题、发布时间、作者、正文、标签,对应匹配SharePoint新闻页的元数据字段和正文编辑区。
- 分阶段执行迁移:先选取10%左右的内容做小批量测试迁移,验证内容完整性、格式兼容性、权限匹配度、链接有效性,修复适配问题后再执行全量迁移;迁移完成后统一修复内容内的旧站点死链,配置旧DNN域名到SharePoint新地址的跳转规则。
- 注意:如果DNN站点搭载了大量自研或第三方采购的自定义模块,这部分内容没有通用迁移逻辑,需要单独针对模块的数据结构做适配开发。市面上的第三方迁移工具基本只能覆盖DNN原生的页面、公开文件迁移,自定义内容无法自动适配,不要盲目采购踩坑。
2. DNN支持内容/文件导出的API说明
DNN 7.0及以上版本提供完整的官方服务端API,完全支持文档、图片等各类文件及站点内容的导出操作:
- 全量文件的读取导出可直接调用内置
FileManager类(归属DotNetNuke.Services.FileSystem命名空间),在Host权限下可遍历站点所有文件夹下的任意类型文件,读取文件元数据(文件名、上传时间、上传人、文件大小、关联权限)以及文件二进制流,覆盖文档、图片、音视频、压缩包等所有上传到DNN平台的文件类型。 - 结构化站点内容(页面信息、模块配置、HTML内容、用户数据、角色权限)可通过DNN原生的
TabController、ModuleController、UserController、RoleController等核心控制器类直接读取导出。 - 第三方自定义模块的内容,可直接通过DNN的数据访问层读取模块对应的自定义数据表,或调用模块自身暴露的业务接口获取数据。
- 补充:DNN自带基础的站点导出功能,可导出站点模板、整站文件压缩包,但批量导出定制化内容时,基于官方API做定制开发的灵活度远高于自带导出工具。
3. DNN文件在SQL Server数据库中的存储位置
DNN支持两种文件存储模式,对应数据库中的存储逻辑有区别:
- 绝大多数站点默认采用文件系统存储模式:文件实体本身不存放在数据库中,而是存储在站点部署路径下的
Portals/[站点ID]/对应层级文件夹内;数据库仅存储文件元数据,核心关联表为Files表,核心字段包括FileId(文件唯一标识)、FileName(文件名)、FolderId(所属文件夹ID)、Extension(文件后缀)、Size(文件大小)、PortalId(所属站点ID)、CreatedByUserID(上传用户ID);文件夹的层级结构存储在Folders表中,和Files表通过FolderId字段关联。 - 若管理员手动开启了数据库存储模式:文件的二进制实体会直接存储在
Files表的Content字段(字段类型为varbinary(MAX)),元数据字段和文件系统存储模式完全一致。 - 版本说明:DNN 5.x及更早的老版本,数据库存储模式下的文件二进制内容存放在
Files表的Data字段,版本升级时系统会自动完成字段数据迁移。如果要定位单个文件的存储位置,直接通过文件已知的文件名、上传时间在Files表中检索对应记录即可,无需全库遍历。
内容的提问来源于stack exchange,提问作者NavasAnswers
相关产品推荐
相关产品推荐

