Sitefinity高级设置在应用程序构建后无法保留
问题解答:CMS中OpenAccessDataProvider设置重建后恢复默认的问题
Hey there! Let's tackle this issue step by step.
一、OpenAccessDataProvider配置的存储位置
对于使用OpenAccess作为数据提供程序的CMS(比如Telerik Sitefinity),你修改的ProviderTypeName属性通常存储在以下文件中:
- 核心配置文件:
~/App_Data/Sitefinity/Configuration/DataProvidersConfig.config
打开这个文件,你会找到类似这样的节点:
这里的<dataProviders> <add name="OpenAccessDataProvider" type="YourCustomProviderType, YourAssemblyName" ...其他属性 /> </dataProviders>type属性就是你在后台修改的ProviderTypeName对应的配置项。 - 少数情况下,也可能关联到根目录的
Web.config,但绝大多数基于OpenAccess的CMS会把数据提供程序配置放在App_Data下的专属配置文件中。
二、让设置生效并保留的解决方案
你的推测大概率是正确的——部署流程用代码仓库里的默认配置文件覆盖了修改后的版本。这里有几种可靠的解决方式:
1. 将修改后的配置文件纳入代码仓库
- 把修改后的
DataProvidersConfig.config(或对应配置文件)提交到代码仓库,这样后续部署时就会使用你更新后的版本,而不是默认文件。 - 注意:如果是多环境部署(开发/测试/生产),不要直接在主分支修改,建议用配置变换(比如Web.config Transform,或CMS自带的环境配置切换功能),针对不同环境定义不同的
ProviderTypeName值,部署时自动应用对应环境的配置。
2. 排查部署脚本是否重置配置
- 检查你的构建/部署自动化脚本(比如CI/CD流程中的步骤),看是否有执行重置配置文件的命令(比如从模板复制默认配置、执行数据库初始化脚本覆盖配置),如果有,调整脚本逻辑,保留你修改的配置项。
3. 如果你的假设错误(配置未被文件覆盖)
如果确认修改后的配置文件在部署后没有被覆盖,但设置还是恢复默认,试试这些操作:
- 清理CMS缓存:很多CMS会缓存配置数据,修改后需要手动清理缓存才能生效。你可以在CMS后台的“高级设置”或“系统管理”中找到缓存清理选项,或者直接重启应用池。
- 检查数据库存储的配置:部分CMS会把核心配置存储在数据库中,而非文件。你可以登录CMS的数据库,查找存储配置的表(比如
sf_settings或类似命名的表),搜索OpenAccessDataProvider相关的条目,确认ProviderTypeName值是否正确保存。 - 验证自定义程序集是否部署正确:如果你的
ProviderTypeName指向自定义程序集,确保该程序集已经被正确部署到服务器的bin目录下,否则CMS会自动 fallback 到默认提供程序类型。
内容的提问来源于stack exchange,提问作者Randy Hall
相关产品推荐
相关产品推荐

