Переопределить machine.config с помощью web.config

Недавно я решил переместить свои строки подключения в machine.config, так как это, кажется, самый элегантный подход для управления несколькими средами. Однако хотелось бы еще иметь возможность переопределить эти настройки в своем локальном web.config, если возникнет необходимость (или начнут жаловаться непросвещенные массы).

Как я могу переопределить настройки из machine.config в моем web.config, не получая ConfigurationErrorsException, потому что значение уже установлено?


person Jim Mitchener    schedule 30.12.2009    source источник


Ответы (1)


Если вы пытаетесь добавить другую строку подключения, используя локальный файл web.config, имя которого совпадает с именем, которое вы добавили в файле machine.config, вам необходимо сначала удалить его. Элемент connectionStrings работает как словарь, вы можете добавить тег удаления или очистки перед добавлением строки замены. Подробнее см. это.

person Rory    schedule 30.12.2009
comment
Хорошо, спасибо имеет смысл для меня. По сути, они объединены в одну глобальную конфигурацию с приложением, поэтому то, что я пытался сделать, на самом деле невозможно. - person Jim Mitchener; 30.12.2009
comment
Если то, что вы пытались сделать, невозможно, то я, должно быть, неправильно понял вопрос. Если память не изменяет, SQL Server Express создает строку подключения в файле machine.config, называемую Local Server или что-то в этом роде, которая затем становится доступной для каждого приложения, потому что, как вы сказали, конфигурации во время выполнения выглядят объединенными. Чтобы переопределить строку подключения SQL, вы можете добавить тег ‹remove name=Local Server /› в свой web.config, а затем ‹add name=Local Server ... /› с новой конфигурацией. - person Rory; 30.12.2009
comment
Да я неправильно понял. Это помогает, когда вы читаете документы;) Теперь я понимаю. Спасибо, это идеально. - person Jim Mitchener; 31.12.2009