Управление ConnectionString для многих проектов на одном сервере, должен ли я создать свой собственный провайдер ConnectionString для нашего кода

У меня на одном Windows Server около 10 разных проектов .NET, в основном .NET 4.0, но есть и .NET 2.0.

Некоторые из этих проектов — asp.net, некоторые — фоновые утилиты/сервисы.

Эти проекты взаимодействуют с более чем сотней различных баз данных в нашей инфраструктуре. ConnectionStrings, которые они используют для этого, меняются по крайней мере несколько раз в месяц.

Проблема здесь в том, что забывание поместить ConnectionString в один из этих проектов может вызвать множество проблем, а новые проекты/обновления постоянно развертываются на сервере многими разными программистами.

Моя новая попытка решения состоит в том, чтобы переопределить класс System.ConfigurationManager во всех проектах и ​​заменить его моей собственной реализацией, которая считывается из общего файла конфигурации, который я могу поддерживать. Затем я просто перекомпилировал каждый проект один раз и развернул его.

Я также мог бы попытаться сохранить ConnectionStrings в файле machine.config, который является общим для всех проектов, но мне пришлось бы делать это для каждой версии .NET Framework, используемой проектом, которого как минимум три, и делать ошибку в этот файл кажется опасным.

Есть ли у кого-нибудь рекомендации, как действовать дальше?

Спасибо.


person Ryan Weir    schedule 06.07.2012    source источник


Ответы (2)


Помимо файла machine.config, вы можете создать общие файлы appSettings. Вам не нужно будет разрабатывать что-то новое, просто поместите свои общие настройки в этот файл и укажите его в своих конкретных файлах конфигурации.

Надеюсь это поможет.


Поскольку ссылка мертва, вот пара примеров.

Чтобы полностью загрузить раздел из внешнего файла:

<connectionStrings configSource="ConnectionStrings.config" />

Чтобы дополнить раздел из внешнего файла (+ что в самом разделе):

<appSettings file="FileService.config">
...
</appSettings>
person Andre Calil    schedule 06.07.2012
comment
Я пробовал это для файлов web.config раньше, и, похоже, использование внешних файлов конфигурации ограничивается теми, которые находятся только в том же каталоге или подкаталогах, если я не ошибаюсь. - person Ryan Weir; 06.07.2012
comment
Нет, посмотрите ссылку, которую я дал. У вас может быть такой каталог, как C:\OneConfigToRuleThemAll\TheOne.config, а остальные могут быть в wwwroot или где-то еще. - person Andre Calil; 06.07.2012
comment
Спасибо! Похоже, это именно то, что мне нужно, чтобы взять это под контроль. - person Ryan Weir; 07.07.2012
comment
Ссылка умерла.. :( - person David; 05.12.2018

Между machine.config и другим решением есть ALIAS. Ограничение здесь: это будет делать только для сервера sql.

person tschmit007    schedule 06.07.2012
comment
Я пытаюсь ограничить последствия этого изменения тем, где извлекаются строки подключения, и похоже, что если вы сделаете это по-вашему, это повлечет за собой другие изменения в том, как соединения с базами данных устанавливаются в коде. Также у меня есть несколько других типов баз данных, кроме SQL Server. Спасибо, в любом случае. - person Ryan Weir; 06.07.2012