Конфигурация безумия, у меня есть app.Config, но мой объект смотрит на web.Config - PullRequest
1 голос
/ 20 августа 2009

Если у вас есть проект библиотеки классов, который действует как ur DAL, и у него есть файл App.Config со строками соединения, как я могу заставить его использовать этот файл конфигурации? Он продолжает получать значения из файла web.config в моем проекте веб-приложения.

В проекте DAL используется LinqToSql. Когда я создаю экземпляр объекта DataContext в своем веб-приложении из ссылочного проекта библиотеки классов DAL, могу ли я заставить его использовать его строки подключения app.Config? Кажется, он игнорирует этот файл и пытается получить строки подключения из узла строки подключения web.Config. Там нет ни одной строки подключения.

Любая помощь приветствуется. Коллега упомянул создание app.Config в DAL и встроенном ресурсе. Это звучит как хорошая идея?

Спасибо, ~ ck в Сан-Диего

Ответы [ 4 ]

3 голосов
/ 20 августа 2009

Веб-приложения всегда используют web.config. Настольные приложения всегда используют app.config.

1 голос
/ 20 августа 2009

как я могу заставить его использовать этот файл конфигурации? Он продолжает получать значения из web.config в моем проекте веб-приложения.

Ты не можешь. Если вы используете классы System.Configuration, они всегда извлекают данные из файла .config активного приложения (app.config для исполняемых файлов, web.config для сайтов asp.net).

Обходные пути включают использование файлового ввода-вывода для считывания ваших настроек (в отличие от пространства имен System.Configuration) или помещение информации о конфигурации DAL в соответствующий файл .config (более распространенный выбор).

0 голосов
/ 16 июля 2010

Вот как я думаю о файле * .config. Скажем, у вас есть метод в вашем DAL:

DoSomething (connectString, SqlDialect, businessObject)

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

По этой причине существуют файлы * .config - они не только специфичны для конкретной среды, но и для приложения. Это значит, что ваше веб-приложение может сказать «Привет всем, connectString =" ... »и SqlDialect =" ... "для каждого вызова метода, пока я не скажу иначе."

Допустим, вы хотите, чтобы одно приложение входило в SQL с одним набором учетных данных, а другое - с другим набором учетных данных (при необходимости с другими разрешениями), чтобы администратор БД мог отслеживать, какое приложение что делает (если он / она так выбирает). Ну, * .config файлы делают это.

Именно поэтому приложение, которое вы запускаете, предоставляет файл * .config. Так что просто вырежьте все содержимое из файла app.config вашего DAL и вставьте его в файл Web.config, затем удалите App.config. После этого вы должны быть готовы.

0 голосов
/ 10 ноября 2009

Я не уверен, но взгляните на это:

using System.Configuration;

ExeConfigurationFileMap Map = new ExeConfigurationFileMap();

Map.ExeConfigFilename = FileName;

Configuration Conf = ConfigurationManager.OpenMappedExeConfiguration(Map, ConfigurationUserLevel.None);

AppSettingsSection section = (AppSettingsSection)Conf.GetSection("???");
...