Как сохранить в перемещаемом профиле с помощью 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 нельзя редактировать, если они заблокированы".

Любые подсказки о том, как это исправить, или я должен просто пойти с локальным профилем?

0 ответов

Другие вопросы по тегам