應用程序配置文件,對於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被人修改了。最終也沒有解決這個問題