Что лучшая практика должна сохранить параметры настройки приложения (такие как имя пользователя и пароль, местоположение базы данных...) в C#?
Подсказка: Я плохо знаком с .NET и C#
Параметры конфигурации приложения, которые относятся ко всему приложению (не зависят от пользователя), принадлежат либо app.config (для настольных приложений), либо web.config (для веб-приложений).
Шифрование разделов файла web.config довольно просто, как описано в этом Супер простом примере .
Если вам нужно сохранить пользовательские настройки (например, настройки приложения и т. Д.) Или настройки всего приложения, не связанные с конфигурацией приложения, вы можете использовать файл настроек, как описано здесь:
конфигурационный файл настроек приложения, ini-файл (nini), встраиваемая база данных (sqlite, berkelydb / и т. Д.), Какой бы метод вы ни выбрали, это зависит от размера / производительности вашего приложения и дизайна.
Я не уверен, в какой версии .net / Visual Studio он был представлен, но вы можете щелкнуть правой кнопкой мыши свой проект, выбрать «Добавить новый элемент» и выбрать «Файл настроек» из окно «Добавить новый элемент». Это предоставляет вашему проекту (названный по умолчанию) файл Settings.settings
, в котором вы можете сконфигурировать все настройки, которые вы хотите раскрыть.
Вы можете определить настройки, которые вы создадите, как Приложение или Пользователь , что означает, что вы можете использовать этот единый интерфейс для управления глобальными и пользовательскими настройками. После того как вы создали параметр в файле Settings.settings с помощью редактора, предоставляемого Visual Studio, вы можете получить к нему доступ с помощью следующего кода:
// Get a Setting value
var valueOfSetting1 = Settings1.Default.Setting1;
// Modify and save a Setting value
Settings1.Default.Setting1 = "New Value";
Settings1.Default.Save();
Первый вариант - это реестр. Это просто, но не слишком безопасно для паролей. Другой вариант - использование файла, который вы создаете. Это тоже небезопасно, если только вы не хотите применить шифрование.
Следующий вариант - использование настроек приложения. Это тоже довольно просто, но есть несколько загвоздок. Во-первых, щелкните правой кнопкой мыши на своем проекте и выберите пункт "Свойства". Там, на вкладке Settings, вы можете сохранить переменные, к которым вы можете обращаться из вашей программы по
string password = Properties.Settings.Default.Password
Вы можете изменить их таким же образом, но ТОЛЬКО ЕСЛИ ОБЛАСТЬ ПРИМЕНЕНИЯ УСТАНОВЛЕНА ПОЛЬЗОВАТЕЛЕМ. Если область видимости задана в масштабе всего приложения, VS по какой-то странной причине не позволяет вам изменять эти переменные. Чтобы сохранить изменения, вы должны вызвать Save() следующим образом:
Properties.Settings.Default.Save();
Они сохраняются в папке User Data в C:\Documents and Settings\'Current User'\Local Settings\Application Data\
Другим вариантом было бы включить их в вашу базу данных, но поскольку вы также храните местоположение вашей базы данных, это может вам не подойти.
Я думаю, app.config (не веб-приложение) или web.config (веб-приложение).
Такие настройки обычно находятся в файлах конфигурации приложения (web.config, app.config).
http://www.devasp.net/net/articles/display/679.html
Если вы храните пароли, вам также может понадобиться зашифровать соответствующий раздел конфигурации.
http://msdn.microsoft.com/en-us/library/53tyfkaw.aspx
http://msdn.microsoft.com/en-us/library/ff650304.aspx
Обратите внимание, если вы используете app.config, вы увидите, что он будет переименован в ..config, в зависимости от того, создается ли DLL или EXE.
Как и в ответах выше, app.config или web.config - лучшее место для настроек приложения. Если вам нужен более надежный способ тегов в стиле xml для базы данных, настроек сервера и тому подобного, вы можете использовать configurationSection и создавать пользовательские секции.
http://www.codeproject.com/KB/cs/CustomConfigurationSectio.aspx
Для паролей базы данных я использую зашифрованную строку в значении xml тега и расшифровываю ее при чтении, таким образом вы не раскрываете пароли.