Как сохранить в перемещаемом профиле с помощью ConfigurationManager в C#
Я пытаюсь сохранить строку в AppSettingsSection текущей конфигурации приложения по умолчанию в перемещаемом профиле с помощью ConfigurationManager (ConfigurationUserLevel.PerUserRoaming).
Когда я сохраняю в локальном профиле (ConfigurationUserLevel.None), он работает просто отлично.
// Write Name in NameSaved Section of AppSettings
public void WriteNameToAppSettings(string nameToSave)
{
// Open Config File
Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming); // ConfigurationUserLevel.None (local) is working just fine...
// Add or Update NameSaved Section of AppSettings
if ((configuration.AppSettings.Settings["NameSaved"]?.Value) == null)
configuration.AppSettings.Settings.Add("NameSaved", nameToSave);
else
configuration.AppSettings.Settings["NameSaved"].Value = nameToSave;
// Save and Refresh Config File
configuration.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configuration.AppSettings.SectionInformation.Name);
}
// Set LastEnteredName Property from NameSaved Section of AppSettings
public void ReadNameFromAppSettings()
{
// Read Config File and then Get Name LastEntered Section of AppSettings
LastEnteredName = ConfigurationManager.AppSettings["NameSaved"]?.ToString() ?? ""; // If null default to ""
}
Я получаю ошибку:
System.InvalidOperationException: "Свойства ConfigurationSection нельзя редактировать, если они заблокированы".
Любые подсказки о том, как это исправить, или я должен просто пойти с локальным профилем?