asp.net-core - 如何在 app.config 中转换连接字符串
问题描述
我正在为 3 年前创建的一个相当大的项目开发 CI/CD 管道,它是一个 asp.net core 2.1 (.NET Framework) 项目。此项目将连接字符串存储在 EF 6 的 app.config 文件中。我试图为此项目创建 Web 部署包,但 VS 无法检测到 app.config 中的连接字符串,我试图创建自定义 Parameters.xml 文件
<parameter name="OptagEntities-app.config Connection String" description="doesn't matter" defaultvalue="__OptagEntities__" tags="">
<parameterentry kind="XmlFile" scope="\\app.config$" match="/configuration/connectionStrings/add[@name='OptagEntities']/@connectionString">
</parameterentry>
我尝试将此项目部署到本地 IIS,我可以看到连接字符串未从 SetParameters.xml 文件中的值更新。我们有本地 TFS 服务器,并且相同的流程适用于 webform 项目。不同的是 Web config,这个项目使用的是 app.config,因为 asp.net core .NET 框架只在发布时创建 web.config。我知道我可以使用 appsetting.json 来转换不同的 ENV,但它需要更改代码,最糟糕的是这个项目正在通过 nuget 引用另一个项目,该项目也在 app.config 中使用连接字符串。有什么解决方法吗?
解决方案
我使用代码打击在运行时更改 EF6 连接字符串,“myConnectionStrings”可以从 appsettings.json 加载
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["Entities"].ConnectionString = "myConnectionStrings";
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
推荐阅读
- c - 虽然循环没有到达链表的末尾
- java - 在android studio中的多个if条件中循环
- android - API 21 中出现屏幕外的 Android 对话框
- c# - 在 Visual Studio 中使用基本 C# if/else 语句时遇到问题
- r - 不能用 rvest 刮桌子
- excel - 从 Excel 或 VBA 中的部分月还款开始计算本金支付 (PPMT)
- sql - 如何在查询中为 sys 数据库使用数据库名称?
- r - 如何在 R 中的 ggtern() 中使用 position_jitter_tern()?
- jquery - 如何使用电子邮件地址对数据进行分组并根据日期和时间按升序排列?
- r - 如何在修改r中的名称时有条件地从长到宽争吵df?