【问题标题】:How to define web.config local variables如何定义 web.config 局部变量
【发布时间】:2015-01-02 00:47:40
【问题描述】:

我有一个带有 .NET Framework 4.0 的 C# Web 应用程序,我正在尝试找到一种方法来在 Web.Config 中定义一个变量,该变量可以在 Web.Config 的其他地方引用。

我想要这样的东西。

<?xml version="1.0" encoding="utf-8"?>
<LocalWebConfigVars>
    <add key="Var1" value="ServerName1"/>
    <add key="Var2" value="DatabaseName1"/>
</LocalWebConfigVars>
<configuration>
    <connectionStrings>
        <add name="AppConnectionString" connectionString="DATA SOURCE=@Var2 ServerName=@Var1"/>
        <add name="OtherStuff" value="@Var1"/>
etc...

目前我必须保持 3 或 4 个硬编码值(一些嵌入其他值只是值)更新为相同的东西,并希望更容易保持同步。

这可能吗?

谢谢。

编辑:

只是一些背景。这成为问题的原因是我们在 web.config 中定义了应用程序数据库实例(以及其他实例特定设置)。我们的测试和生产环境中有多个数据库实例,如果我在测试某些东西时需要切换到不同的数据库实例并且错过了其中一个充满参考的手,我会得到一些奇怪的结果。我试图通过定义一次并在其他任何地方引用它来避免这种情况。

【问题讨论】:

  • 为什么不能创建自定义配置类并在类内部分配指向每个键的属性值..?或者甚至更简单地使用ConfigurationManager.AppSettings 来访问属性.. 不要硬编码添加到.config 比硬编码更容易,并继续重新编译代码以进行简单的更改..
  • 我不确定您的建议。为了详细说明我的情况,我们将同一 Web 应用程序的多个实例部署到不同的服务器,并将它们指向生产和测试环境中的不同数据库服务器。 web.config 被用来告诉应用程序的特定实例在哪里寻找这些东西。所以总而言之,我们应用程序的每个实例都有一个唯一的 web.config,告诉它它的特定数据库和服务器在哪里。
  • @DJKRAZE 我们确实在应用程序中使用 ConfigurationManager.AppSettings 来查看 web.config 变量,例如我的示例中的连接字符串,但我希望有一个自包含的 web.config 语法,它可以让我在 1 个地方更改名称,所有依赖字符串都使用引用的新值更新。
  • 就像我说的,你可能想要创建一个自定义类来保存 AppSettings 和 Config Settings 看看这篇文章stackoverflow.com/questions/603009/…

标签: c# asp.net-mvc asp.net-mvc-4 web-config configuration-files


【解决方案1】:

不会为您的每个环境工作进行简单的 .config 转换,通过设置项目配置和转换,您将能够通过使用解决方案配置下拉列表从环境切换到环境。

看到这个link 有关 .config 文件转换的更多信息

【讨论】:

  • 这似乎是一个合理的解决方案,但我的工作环境有限制,我只能使用经过批准的工具。此解决方案似乎需要第三方实用程序针对 .config 文件运行以填充变量。 Visual Studios 或 .NET 中是否存在类似的东西?
  • web.config 转换是通过 MSBuild 完成的,从 V2010 开始,它们在 Visual Studio 中是原生的。另一篇好文章是Link
  • 这种转换是否仅在构建部署期间发生,或者我也可以在 Visual Studio 中进行调试工作时使用此语法?
  • 我还没有这样做,但是看到这个link
猜你喜欢
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 2018-10-16
  • 2021-10-04
  • 2011-11-28
  • 1970-01-01
  • 2012-03-29
相关资源
最近更新 更多