webform1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="work045.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>使用代码动态修改web.config的示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="1">
<tr>
<th>类型</th>
<th>名称</th>
<th>值</th>
</tr>
<tr>
<td>程序配置</td>
<td>
<asp:TextBox ID="txtKey1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtKey1" Display="Dynamic"></asp:RequiredFieldValidator>
</td>
<td>
<asp:TextBox ID="txtValue1" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>数据库连接</td>
<td>
<asp:TextBox ID="txtKey2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*" ControlToValidate="txtKey2" Display="Dynamic"></asp:RequiredFieldValidator>
</td>
<td>
<asp:TextBox ID="txtValue2" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="3">
<asp:Button ID="Button1" runat="server" Text="保存" OnClick="Button1_Click" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
webform1.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace work045
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.UnobtrusiveValidationMode = System.Web.UI.UnobtrusiveValidationMode.None;
}
protected void Button1_Click(object sender, EventArgs e)
{
string key1 = txtKey1.Text;
string appSetting = txtValue1.Text;
string key2 = txtKey2.Text;
string connectionString = txtValue2.Text;
work045.ConfigurationOperator op = new work045.ConfigurationOperator();
op.SetAppSetting(key1, appSetting);
op.SetConnectionString(key2, connectionString);
op.Save();
}
}
}
configurationoperator.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace work045
{
/// <summary>
/// ConfigurationOperator的说明
/// </summary>
public class ConfigurationOperator : IDisposable
{
private System.Configuration.Configuration config;
public ConfigurationOperator()
: this(System.Web.HttpContext.Current.Request.ApplicationPath)
{
}
public ConfigurationOperator(string path)
{
this.config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(path);
}
/// <summary>
/// 设置应用程序配置节点,如果已存在,则修改
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="value">节点值</param>
public void SetAppSetting(string key, string value)
{
System.Configuration.AppSettingsSection appSetting = (System.Configuration.AppSettingsSection)config.GetSection("appSettings");
if (appSetting.Settings[key] == null)
{
appSetting.Settings.Add(key, value);
}
else
{
appSetting.Settings[key].Value = value;
}
}
/// <summary>
/// 设置数据库连接节点,
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="cnString">节点值</param>
public void SetConnectionString(string key, string cnString)
{
System.Configuration.ConnectionStringsSection csSection = (System.Configuration.ConnectionStringsSection)config.GetSection("connectionStrings");
if (csSection.ConnectionStrings[key] == null)
{
System.Configuration.ConnectionStringSettings csSettings = new System.Configuration.ConnectionStringSettings(key, cnString);
csSection.ConnectionStrings.Add(csSettings);
}
else
{
csSection.ConnectionStrings[key].ConnectionString = cnString;
}
}
/// <summary>
///
/// </summary>
public void Save()
{
config.Save();
config = null;
}
/// <summary>
///
/// </summary>
public void Dispose()
{
if (config != null)
{
config.Save();
}
}
}
}