2009-09-21 3 views
0

Предположим, у меня есть веб-сайт ASP.NET, работающий со своим соответствующим файлом web.config, который содержит кучу строк подключения для доступа к базе данных. У меня также есть небольшая консольная консольная программа (развернутая в той же папке, что и веб-приложение), которая выполняет задачи обслуживания и другие вещи. Эти вспомогательные программы обмениваются кучей dll с веб-приложением, поэтому мне нужно сохранить отдельный файл bla.exe.config для него, чтобы общая dll находила строки подключения и т. Д. Я хочу иметь возможность сделать консольное приложение используйте web.config вместо собственного файла конфигурации.Совместное использование цепочек между двумя приложениями .NET

До сих пор мне удалось загрузить AppSettings во время выполнения (с использованием ConfigurationManager.OpenMappedExeConfiguration, перекручивание через appsettingts и добавлять их динамически в ConfigurationManager.AppSettings коллекции), но ConfigurationManager.ConnectionStrings член, очевидно, только для чтения, так что я не могу «инъецировать» В него вставляются ссылки web.config.

Любые идеи?

+0

Является ли вспомогательная консольная программа частью того же решения Visual Studio? Если это так, вы можете подумать о создании ваших файлов конфигурации с помощью сценария NANT. – RichardOD

+0

Идея состоит в том, чтобы иметь один файл конфигурации для снижения затрат на обслуживание и предотвращения будущих SNAFU, вызванных различиями в конфигурационных файлах. –

ответ

1

Вы можете попытаться использовать configSource attribute раздела connectionStrings для ссылки на внешний файл. Я не пробовал, но что-то вроде этого:

<connectionStrings configSource="..\connnectionstrings.config"> 

connectionstrings.config:

<connectionStrings> 
    <add name="..." connectionString="Server=...;Database=..;" /> 
</connectionStrings> 

Update:

подход показано выше, не работает , Элемент configSource не поддерживает абсолютные пути или относительные пути, начинающиеся с «.. \».

+0

Я попробовал подход configSource и, похоже, работает. Проблема в том, что я должен поместить файл connectionstrings.config непосредственно в каталог «bin», какой отстой, но по-прежнему приемлемо. Я подожду, посмотрю, появится ли лучшее решение, иначе я буду отмечать это как принятое. –

1

Лично я бы просто запрограммировал способ, чтобы оба приложения могли найти один и тот же файл. Я бы использовал что-то вроде Environment.SpecialFolder, используя перечисление CommonApplicationData. Вы можете рассмотреть файл machine.config, хотя он обычно не рекомендуется.

Смежные вопросы