有没有办法通过.cs或.aspx页面更新asp.net中的Web.config文件

时间:2015-06-24 10:46:42

标签: c# asp.net web-config

我需要通过.aspx或.cs页面从ASP.Net中的web.config文件更改值appSettings。是否可能>请提供一些示例,我的示例代码是:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="variable" value="7" />
    <add key="logfilelocation" value="abc.txt" />
  </appSettings>
</configuration>

2 个答案:

答案 0 :(得分:1)

基于此thread

 Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
  myConfiguration.AppSettings.Settings.Item("myKey").Value = txtmyKey.Text;
  myConfiguration.AppSettings.Settings.Remove("MyVariable");
  myConfiguration.AppSettings.Settings.Add("MyVariable", "MyValue");
  myConfiguration.Save();

答案 1 :(得分:0)

是的,但是应该谨慎行事。我必须执行此操作的示例是作为安装程序项目的一部分,因此web.config未被使用,并且该应用程序是第一次安装。

这样的东西可以适应你的目的:

private string ConfigPath { get { return Path.Combine(targetDirectory.Substring(0, targetDirectory.LastIndexOf("\\") - 1), "Web.Config"); } }

XmlDocument doc = new XmlDocument();
doc.Load(this.ConfigPath);

XmlNode MyNode = doc.SelectSingleNode("configuration/appSettings/add[@key='YourKey']");
MyNode.Attributes["value"].Value = YourValue;

doc.Save(this.ConfigPath);

或者,您可以像这样使用ConfigurationManager来修改现有密钥:

var config = System.Web.Configuration.WebConfigurationManager
      .OpenWebConfiguration("~/web.config");
config.AppSettings.Settings["Your Key"].Value = "Your Value";
config.Save(ConfigurationSaveMode.Modified);