I am developing a WPF project. I want to save users settings. I use to ConfigurationManagerClass. I read these links(http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx , http://msdn.microsoft.com/en-us/library/ms134265(v=vs.110).aspx). Then I decided to use PerUserRoaming param. According to this param , settings should be written in "C:\Users\BDagli\AppData\Roaming\DiBASUI\DiBASUI.vshost.exe_Url_zep32lw2fomt1eij4jb2qhip2cbd211o\1.0.0.0\user.config" . But it can not be created. And exception is occured.
System.Configuration.ConfigurationErrorsException: An error occurred executing the configuration section handler for appSettings. ---> System.InvalidOperationException: ConfigurationSection properties cannot be edited when locked. at System.Configuration.SectionInformation.VerifyIsEditable() at System.Configuration.MgmtConfigurationRecord.GetConfigDefinitionUpdates(Boolean requireUpdates, ConfigurationSaveMode saveMode, Boolean forceSaveAll, ConfigDefinitionUpdates& definitionUpdates, ArrayList& configSourceUpdates) --- End of inner exception stack trace --- at System.Configuration.MgmtConfigurationRecord.GetConfigDefinitionUpdates(Boolean requireUpdates, ConfigurationSaveMode saveMode, Boolean forceSaveAll, ConfigDefinitionUpdates& definitionUpdates, ArrayList& configSourceUpdates) at System.Configuration.MgmtConfigurationRecord.SaveAs(String filename, ConfigurationSaveMode saveMode, Boolean forceUpdateAll) at System.Configuration.Configuration.SaveAsImpl(String filename, ConfigurationSaveMode saveMode, Boolean forceSaveAll) at System.Configuration.Configuration.Save(ConfigurationSaveMode saveMode) at DiBASUI.ConfigurationHelper.AddUpdateAppSettings(String key, String value) in c:\Users\BDagli\Documents\Visual Studio 2013\Projects\WpfApplication2\DiBASUI\ConfigurationHelper.cs:line 66
My code is as follows:
public static void AddUpdateAppSettings(string key, string value)
{
try
{
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming);
var settings = configFile.AppSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}
catch (ConfigurationErrorsException ex)
{
Console.WriteLine(ex.ToString());
}
}
*******************************
ConfigurationHelper.AddUpdateAppSettings("rememberMe", "true");
How Can I proceed?
I added AllowExeDefinition.
public static void AddUpdateAppSettings(string key, string value)
{
try
{
Configuration configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming);
AppSettingsSection appSettings = configFile.AppSettings;
error line-> appSettings.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToRoamingUser;
var settings = appSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}
catch (ConfigurationErrorsException ex)
{
Console.WriteLine(ex.ToString());
}
}
Exception is occured which is as follow:
System.InvalidOperationException: {"ConfigurationSection properties cannot be edited when locked."}