【问题标题】:How to programmatically override web.config settings如何以编程方式覆盖 web.config 设置
【发布时间】:2010-12-07 02:33:37
【问题描述】:

当我在 web.config 中有一个特定设置时,比如会话状态配置,并且我想以编程方式确定 Application_Start 的配置,我将如何处理。我正在尝试对每个环境进行稍微不同的配置。

有什么想法吗?

【问题讨论】:

  • 你不想得到任何额外的代表点 --> 666

标签: asp.net configuration


【解决方案1】:

The following link should be helpful...

PS:这是您在 google 中输入“alter web.config programmatically”时发现的第一件事。

【讨论】:

  • 该示例显示了如何更改 web.config。但是,如问题所述,我不想覆盖文件以防止重新启动。在您保存文件之前,ASP.NET 不会看到您以这种方式所做的任何更改。
【解决方案2】:

我认为您不能在运行时更改 web.config 中的设置而不重新加载应用程序。正如@ChristopheD 答案中的文章所示,您可以在运行时读取和写入 web.config 设置,但保存它们会在应用程序写出更改时重新启动应用程序。我很确定,一旦您的应用程序达到您可以执行此操作的程度,ASP.NET 已经将它们读入并在运行时更改它们而不保存它们将无效。

FWIW,我建议不要在运行时进行这种特定于环境的操作。更好的方法是在构建或部署时更改每个环境的 web.config。 MSDeploy 有办法做到这一点,并且该功能将在 VS2010 中提供。

【讨论】:

  • 正确,要使配置更改生效,必须重新启动 AppDomain。在 ASP.NET 的情况下,这意味着重新启动您的应用程序并带来所有后果(丢失缓存内容、内存中会话的所有用户会话等)。
  • 谢谢;明确的答案。不是我所希望的,但我会更好地了解 MSDeploy。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多