WedX - журнал о программировании и компьютерных науках

Динамически изменять connectionString в web.config

У меня есть следующее в моем web.config

<connectionStrings>
   <add name="ActiveDirectoryConnection" connectionString="LDAP://ActiveDirectoryDomain1.com" providerName="System.Web.Security.ActiveDirectoryMembershipProvider"/>
</connectionStrings>

Мне нужно добавить раскрывающийся список на мою страницу входа, который позволяет пользователю изменить connectionString на другую строку, например. "LDAP://ActiveDirectoryDomain2.com"

В коде С#, как изменить значение connectionString?


Дополнительная информация:

Проблема, с которой я сталкиваюсь, заключается в том, что есть 4 других параметра web.config, вызывающих эту строку подключения. Например:

<activeDirectorySecurityContextSettings connectionStringName="ActiveDirectoryConnection" defaultADUserName="ReportUser" defaultADPassword="password"/>  

Спасибо!


Ответы:


1

Если пользователь может изменить значение параметра, значит, файл web.config — неподходящее место для хранения этого параметра.

Вместо этого вы должны проверить значение User Scoped в файле настроек.

MSDN — Использование настроек в C#

При использовании таких настроек легко изменить значение во время выполнения:

Properties.Settings.Default.LdapConnectionString = "New Connection String";
Properties.Settings.Default.Save();
09.08.2010
  • Или, наоборот, если вы хотите, чтобы он был для всего приложения (я думаю, что администратор приложения может захотеть внести изменения в базу данных приложения для всех пользователей, а не для каждого соединения), вы можете использовать одноэлементный класс для все ваши строки подключения и измените их в классе singleton из интерфейса вашего приложения... Затем эти данные могут быть сохранены в другом месте и по-прежнему могут быть сохранены между сеансами приложения. 09.08.2010
  • @drachenstern - На самом деле было бы разумнее использовать настройки. Вы бы просто сделали его областью приложения, а не пользователем. Гораздо проще, чем пытаться реализовать еще один синглтон, который миру не нужен. 09.08.2010
  • Проблема, с которой я сталкиваюсь, заключается в том, что есть 4 других параметра web.config, вызывающих эту строку подключения. Например: ‹activeDirectorySecurityContextSettings connectionStringName=ActiveDirectoryConnection defaultADUserName=ReportUser defaultADPassword=password/› Похоже, я не могу поместить его в файл настроек. 09.08.2010
  • ~ Спасибо, я вижу, мне нужно освежить настройки, я думал, что это зависит от пользователя, а не от приложения ... /facepalm снова наносит удар! 09.08.2010

  • 2
    • Плохая идея изменять файл *.config изнутри программы.
    • Для веб-страницы не рекомендуется изменять любой файл в корневой папке вашего веб-сайта.
    • Плохая идея иметь набор разрешений, позволяющий веб-странице изменять файлы в корневой папке вашего веб-сайта.

    По сути, вам нужно забыть о web.config и структурировать свой код, чтобы использовать строку подключения, которая существует только в памяти.

    09.08.2010

    3

    Даже если изменять файл web.config из приложения — плохая идея, вы можете попробовать следующее:

    System.Configuration.ConfigurationManager.AppSettings.Set("keyToBeReplaced", "newKeyValue");
    
    11.06.2012
  • Это не делает то, о чем просил ОП. 28.12.2012
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]