asp.net - 根据 ASP.NET 中的环境变量更改 web.config 文件

标签 asp.net web-config development-environment environment-variables

我需要根据环境变量更改 web.config 文件中的连接字符串(针对不同的环境,如开发/暂存/生产等)。我见过其他使用构建任务来完成更改不同配置的解决方案,但无法找到可以让我根据环境变量更改连接字符串的东西。有谁知道有什么方法可以做到这一点吗?

最佳答案

我们在 web.config 中使用 appSettings 和 connectionStrings 元素的 configSource 属性。

基本上,我们的所有环境都有相同的 web.config 文件:开发、质量保证和生产。

然后我们利用单独的“环境特定”文件......例如......

在 web.config 中:

<?xml version="1.0"?>
<configuration>
  <appSettings configSource="local.appsettings.config" />
  <connectionStrings configSource="local.connectionstrings.config" />
</configuration>

然后我们维护以下文件:

local.appsettings.config.development
local.appsettings.config.qa
local.appsettings.config.production
local.connectionstrings.config.development
local.connectionstrings.config.qa
local.connectionstrings.config.production

由于我们在部署之前预编译了所有 ASP.NET 应用程序,因此我们的 CI 解决方案使用了一个自定义 msBuild 任务,该任务将正确的配置文件(基于目标环境)复制到正确的 .config 文件...

所以,如果我们要部署到开发环境,local.appsettings.config.development -> local.appsettings.config

如果我们要部署到 qa,则 local.appsettings.config.qa -> local.appsettings.config

这使我们能够在所有环境中保持核心 web.config 相同。

关于asp.net - 根据 ASP.NET 中的环境变量更改 web.config 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1140367/

相关文章:

c# - 从代码隐藏 (c#) catch block 调用 JavaScript 函数

c# - ASP.NET MVC 中的 session 本地存储或服务器端 session ?

c# - Web 应用程序 - 仪表板类型 GUI - 界面

c# - 在何处配置 WCF 服务(REST 和 SOAP)

c# - Azure 应用程序可以在开发结构上运行,但在部署时无法运行

c# - SOAP 扩展实现

java - 是否有任何键盘快捷键可以在 IntelliJ Idea 中的类上添加 @SuppressWarnings?

java - 如果我想用 clojure 开发一个独立的 jar,应该把要处理的文件放在哪里?

javascript - 是否可以在本地机器上测试Google客户评论徽章

asp.net - Facebook 开发者 : making a permission optional