以编程方式编辑Web.config

14

有什么好的方法可以通过编程方式编辑Web.config文件?

我研究了System.Xml,但没有找到任何明显的答案。

7个回答

15

这位在所有警告后仍展示了样本代码,如果你仍想尝试:

protected void EditConfigButton(object sender, EventArgs e)
{
   Configuration objConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
   AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection("appSettings");
   //Edit
   if (objAppsettings != null)
   {
      objAppsettings.Settings["test"].Value = "newvalueFromCode";
      objConfig.Save();
   }
}

编辑 web.config 文件的一个正当理由是对其进行加密,这正是该文章所讲述的内容。


更改示例的身份验证模式。 - AgentFire

4
你可以使用WebConfigurationManager来读取特定的配置部分。这将返回一个ConfigurationSection对象。您可以使用它来读取/修改部分中的ConfigurationElements。一旦您更新了它们,您可以保存ConfigurationSection,它将使用您的更改更新文件。
我在Application_Start中使用它来自动加密appSettings和connectionStrings,如果它们尚未加密。我实际上没有以这种方式更改任何设置,但似乎应该能够这样做。
更新配置文件后,根据构建方式,可能会导致应用程序重启。

2

根据你所做的事情,每种情况下的方法略有不同。然而,最强大的方法是将其作为XmlDocument加载并通过该方法根据需要进行修改,但您必须小心仅以所需方式进行修改。


2
理论上,你可以通过编程生成web配置文件,并使用一些模板使其更容易阅读。
然而,如果你试图在网站内部编辑你的web.config文件,极不建议这样做。至少,每次更新都会触发应用程序重置,如果你正在使用进程会话,这将特别糟糕。
正如Anders所问:你想要做什么?

更改示例的身份验证模式。 - AgentFire

1

同意其他人的观点,编辑webconfig是可行的,但会带来连锁反应,风险太大。

如果这个值是特定于应用程序的,那么它应该在一个特定于应用程序的配置文件中。


1

很多时候,您希望在部署后修改特定于应用程序的设置,例如在出现问题时切换数据库连接(例如当前DB崩溃时)。此外,有时您希望创建自己的基于XML的配置文件,并且想要以编程方式进行修改。

试试XML Webpad - http://xmlwebpad.codeplex.com/

这是一个查看和编辑XML文件的框架。一旦将其集成到您的Web应用程序中,编辑web.config页面将变得非常简单,只需浏览web.config页面,进行必要的更改并点击保存按钮即可(所有这些都在应用程序内完成)。


1

是的,我同意Josh的观点。我以前尝试过这个方法,但有两个负面影响:

  1. 如果在postback后当前页面加载缓慢,因为ASP.NET正在加载web.config和所有相关资源
  2. 如果您在加载周期的早期更改了web.config(例如global.asax事件),则网站可能永远无法加载或以不可预测的方式失败

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接