Текущая система настройки не поддерживает настройки, зависящие от пользователя.

Я пытаюсь использовать файл настроек для сохранения пользовательских настроек при входе в приложение.

Я определил их как user (scope), но я получаю

System.Configuration.ConfigurationErrorsException: The current configuration system does not support user-scoped settings.

Что может быть хорошим решением?

Ответы

Ответ 1

Настройки веб-приложения для веб-приложений действительно не поддерживаются. И они не будут работать, пользовательские настройки должны быть сохранены в папке Users\<username>\... на сервере.

У вас есть широкий выбор веб-технологий:

  • постоянные файлы cookie
  • Профили членства ASP.NET
  • ваш собственный Db

Ответ 2

Когда у меня возникла эта проблема, оказалось, что у меня есть ссылка на dll, в которой был файл Settings.settings(или Settings.Designer.cs).

Случается, что при редактировании файла Setting.settings при нажатии пустой строки внизу новая строка добавляется с информацией о шаблоне и пользовательской настройкой по умолчанию вместо настройки приложения. Это приятная функция, но вы можете увидеть, как после изменения шаблона и добавления новых параметров, а затем нажав ниже, чтобы потерять фокус, добавлена ​​новая строка шаблона, и если вы не обращаете внимания, вы случайно добавляете пользовательские настройки. Проверьте, есть ли у вас этот файл в соответствующей DLL-ссылке и удалены любые пользовательские настройки.

enter image description here

Ответ 3

Вы можете изменить параметры области приложения, просто добавив сеттер в определение свойства в Settings.Designer.cs. Например:

[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("AdminContext")]
public string DbContext
{
    get { return ((string)(this["DbContext"])); }
    set { this["DbContext"] = value; } }

Предостережение заключается в том, что Settings.Designer.cs автоматически сгенерирован, и поэтому, если вы используете пользовательский интерфейс дизайнера, ваши сеттеры будут перезаписаны.

Это работает в консольных и веб-приложениях.