但是在WebForm下,往往会因为权限不足而报错。如下图:

本文提供了另外一种方式,利用.net2.0类库里面的Configuration来进行写操作。详细介绍请看下面的详细介绍。
Configuration 是允许进行编程访问以编辑配置文件的类。对于WebForm的config文件,可以用如下代码得到Configuration类的实例:
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);对于WinForm的config文件,可以用如下代码得到Configuration类的实例:
Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
需要注意的是,对文件进行写操作之后,需要调用Save()方法保存结果。整个程序的源代码如下,并附有详细代码注释。
- using System;
- using System.Configuration;
- using System.Web;
- using System.Windows.Forms;
- namespace NetSkycn.Common
- {
-
-
-
-
-
-
-
- public enum ConfigType
- {
-
-
-
- WebConfig = 1,
-
-
-
- ExeConfig = 2
- }
-
-
-
-
-
-
-
- public class ConfigurationOperator
- {
- private Configuration config;
- private string configPath;
- private ConfigType configType;
-
-
-
- public Configuration Configuration
- {
- get { return config; }
- set { config = value; }
- }
-
-
-
-
- public ConfigurationOperator(ConfigType configType)
- {
- this.configType = configType;
- if (configType == ConfigType.ExeConfig)
- {
- configPath = Application.ExecutablePath;
- }
- else
- {
- configPath = HttpContext.Current.Request.ApplicationPath;
- }
- Initialize();
- }
-
-
-
-
-
- public ConfigurationOperator(string configPath, ConfigType configType)
- {
- this.configPath = configPath;
- this.configType = configType;
- Initialize();
- }
-
- private void Initialize()
- {
-
- if (configType == ConfigType.ExeConfig)
- {
- config = System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
- }
- else
- {
- config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);
- }
- }
-
-
-
-
-
- public void AddAppSetting(string key, string value)
- {
- AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
- if (appSetting.Settings[key] == null)
- {
- appSetting.Settings.Add(key, value);
- }
- else
- {
- ModifyAppSetting(key, value);
- }
- }
-
-
-
-
-
- public void AddConnectionString(string key, string connectionString)
- {
- ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings");
- if (connectionSetting.ConnectionStrings[key] == null)
- {
- ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings(key, connectionString);
- connectionSetting.ConnectionStrings.Add(connectionStringSettings);
- }
- else
- {
- ModifyConnectionString(key, connectionString);
- }
- }
-
-
-
-
-
- public void ModifyAppSetting(string key, string newValue)
- {
- AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
- if (appSetting.Settings[key] != null)
- {
- appSetting.Settings[key].Value = newValue;
- }
- else
- {
- AddAppSetting(key, newValue);
- }
- }
-
-
-
-
-
- public void ModifyConnectionString(string key, string connectionString)
- {
- ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings");
- if (connectionSetting.ConnectionStrings[key] != null)
- {
- connectionSetting.ConnectionStrings[key].ConnectionString = connectionString;
- }
- else
- {
- AddConnectionString(key, connectionString);
- }
- }
-
-
-
- public void Save()
- {
- config.Save();
- }
- }
- }