使用外部 configSource 将连接字符串替换为 Web.Release.config

问题描述 投票:0回答:1

我正在尝试将所有连接字符串移动到外部文件,但我无法让我们的生产应用程序运行 - 发布时我们收到一条错误消息:

**

Web.config 连接字符串参数不能为 null 或为空。

**

我想知道发布转换是否不起作用。

仅供参考 - 我们将所有文件属性设置为

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 文件中时,转换就会起作用 - 但这违背了我们想要做的事情的目的。

所以 - 我无法告诉生产数据库在发布时替换连接字符串缺少什么。

asp.net-mvc web-config xdt-transform configsource
1个回答
0
投票

这篇文章解释得很好:

https://davidsekar.com/asp-net/vsts-replace-tokens-task-is-not-replacing-connectionstring

主要原因是您必须停用的默认配置

© www.soinside.com 2019 - 2024. All rights reserved.