我正在尝试将我们所有的连接字符串移动到外部文件,但我无法让我们的生产应用程序运行 - 发布时我们收到一条错误消息:
**
Web.config 连接字符串参数不能为空或为空。
**
我想知道 Release 转换是否不起作用。
仅供参考 - 我们将所有文件属性设置Copy To Output Directory
为Copy Always
我们有 5 个文件 -
1) Web.config
2) Web.Release.config
3) Web.Debug.config
4) Configurations\Debug.Conn.config
5) Configurations\Release.Conn.config
开发:( 这是有效的)
Web.config
&Web.Debug.config
包含:
<connectionStrings configSource="Configurations\Debug.Conn.config" />
配置源指向我们的本地开发数据库并且正在工作:
Configurations\Debug.Conn.config:
<connectionStrings>
<add name="AppDB"
connectionString="Data Source=DESKTOP-ABCDEF;Initial Catalog=MyApp;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
对于生产:( 这不起作用)
Web.Release.config
包含:
<connectionStrings xdt:Transform="Replace" configSource="Configurations\Release.Conn.config" />
configSource 指向我们的生产数据库。
Configurations\Release.Conn.config:
<connectionStrings>
<add name="AppDB" connectionString="Data Source= ... Production Database ... '" />
</connectionStrings>
--
首先:在我寻找答案的所有过程中,我只能找到有关使用 Web.config 主文件进行转换的帖子 - 几乎没有提到使用外部文件使用configSource
其次:当我删除外部文件并将数据直接放入 Web.config 文件时,转换工作——但这违背了我们试图做的事情的目的。
所以 - 我不知道在发布时从替换连接字符串中获取生产数据库缺少什么。