应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe.config)。node
配置文件,对于程序自己来讲,就是基础和依据,其本质是一个xml文件,对于配置文件的操做,从.NET 2.0 开始,就很是方便了,提供了 System [.Web] .Configuration 这个管理功能的NameSpace,要使用它,须要添加对 System.configuration.dll的引用。web
对于WINFORM程序,使用 System.Configuration.ConfigurationManager;服务器
对于ASP.NET 程序, 使用 System.Web.Configuration.WebConfigurationManager;app
对于配置文件内容的读取,真是太广泛不过了,若是你的程序里,没有读取配置文件内容的方面,你都很差意思拿出来用asp.net
咱们以最多见的 AppSettings 小节来做为例子:编辑器
假设有以下的配置文件内容:工具
<?xml version="1.0" encoding="utf-8" ?>post
<configuration>this
<appSettings>url
<add key="y" value="this is Y"/>
</appSettings>
</configuration>
1. 读取值:
- Asp.Net: System.Web.Configuration.WebConfigurationManager.AppSettings[“y”];
- WinForm: System.Configuration.ConfigurationManager.AppSettings[“y”];
2. 添加一项
- ASP.NET(须要有写权限):
Configuration config = WebConfigurationManager.OpenWebConfiguration(null);
AppSettingsSection app = config.AppSettings;
app.Settings.Add("x", "this is X");
config.Save(ConfigurationSaveMode.Modified);
- WinForm:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection app = config.AppSettings;
app.Settings.Add("x", "this is X");
config.Save(ConfigurationSaveMode.Modified);
3. 修改一项
- Asp.Net
Configuration config = WebConfigurationManager.OpenWebConfiguration(null);
AppSettingsSection app = config.AppSettings;
//app.Settings.Add("x", "this is X");
app.Settings["x"].Value = "this is not Y";
config.Save(ConfigurationSaveMode.Modified);
- WinForm
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection app = config.AppSettings;
//app.Settings.Add("x", "this is X");
app.Settings["x"].Value = "this is not Y";
config.Save(ConfigurationSaveMode.Modified);
4. 删除一项
- Asp.Net
Configuration config = WebConfigurationManager.OpenWebConfiguration(null);
AppSettingsSection app = config.AppSettings;
app.Settings.Remove("x");
config.Save(ConfigurationSaveMode.Modified);
- WinForm
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection app = config.AppSettings;
app.Settings.Remove("x");
config.Save(ConfigurationSaveMode.Modified);
说明:须要注意的是,代码所修改的并非app.config,而是[Application_Name].exe.config这个文件。其中Application_Name就是你的可执行文件的文件名,而[Application_Name].exe.config才是真正起做用的配置文件。至于app.config,把它理解为是初始化配置文件比较合适。对于winfom在vs调试下app.config无变化是正常的,bin里面生成的程序,运行可看到效果。
事实上,运行时报错:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
没法为请求的 Configuration 对象建立配置文件。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中致使错误的出处的详细信息。
异常详细信息: System.Configuration.ConfigurationErrorsException: 没法为请求的 Configuration 对象建立配置文件。
源错误:
行 13: configuration.Save();//保存配置文件
后面查找帮助,说是:若要启用对远程服务器上配置设置的访问,请使用 Aspnet_regiis 命令行工具。
而Aspnet_regiis帮助中说的是:-config+ 容许对计算机上的 ASP.NET 配置进行远程访问。
但执行该命令后运行该项目仍然报一样错误。
再看帮助,说是:请注意,进行写入操做的用户或进程必须具备如下权限:
在当前配置层次结构级别下对配置文件和目录的写入权限。
对全部配置文件的读取权限。
可是个人文件访问权限是everyone彻底控制,应当不会没有写入权限吧。
后面进入组策略编辑器,发现管理员用户竟然没有启用,而如今使用的当前用户确实是Administrator,将用户名修改后,发如今组策略编辑器中不能启用管理员账户,估计是这个版本的XP被人修改了。最终也没有解决这个问题