2009-05-15 1 views
1

У меня есть решение .NET 2008 с проектом, который действует как хост службы WCF. Этот проект имеет файл web.config с настройками, которые будут заменены установщиком, когда проект будет завершен. Эти параметры являются компонентами, которые составляют строку соединения и несколько других.Значения Web.config, прошедшие через уровни

Этот проект WCF ссылается на проект бизнес-логики (библиотека классов, который реализует служебный код), который, в свою очередь, ссылается на проект DAL, который использует Entity Framework.

Что я хотел бы знать, как получить значения в файле web.config в проекте WCF с помощью DAL? Без использования каких-либо относительных путей, которые я видел с помощью OpenMappedExeConfiguration. Мне нужно создать строку соединения в DAL на основе параметра в файле web.config.

Спасибо за ваши ответы.

ответ

1

Я храню общие вещи, такие как строки подключения в 1 папке, которая даже не находится в папке, где живет исходный код. В уровне DAL я просто использую ConfigurationManager, чтобы поднять его.

В проекте, который начинается применение (в вашем случае, это `ы проект WCF), я добавить файл«ConnectionStrings.config»от моего внешнего«конфигурации»папки КАЧЕСТВЕ LINK (в Visual Studio, нажмите«Добавить существующий элемент '-> выбрать элемент -> рядом с кнопкой «Добавить» - стрелка, где этот вариант живет). Затем я просто устанавливаю его через свойства этого файла (щелкните по файлу в обозревателе решений -> нажмите F4) в качестве содержимого проекта и что он должен быть скопирован еще раз, если будет изменен для развертывания папки. Затем я добавляю новый файл app.config для проекта, который включает в себя «ConnectionString.config».

Источник connectionstrings.config:

<connectionStrings> 
    <add name="MyConnectionString" 
    connectionString="Data source=tralala"/> 
</connectionStrings> 

Источник app.config в проекте WCF:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionStrings configSource="ConnectionStrings.config"></connectionStrings> 
</configuration> 

Я не уверен, что это лучший подход. Но пока все хорошо.

+0

Это эффективный подход, когда проекты знают друг о друге. Это плохо работает при разработке компонентов «черного ящика». В этом случае было бы неплохо, если бы включив компонент «X» в приложение «Y», необходимые записи конфигурации для компонента «X» были записаны в файл конфигурации приложения. К сожалению, это не работает. –

+0

Верно, может быть, немного повезло, что компоненты, которые я строю, мало используются в качестве автономных компонентов. Поскольку код реализации службы живет в BL, а BL использует объекты EF, которые поступают из DAL. Но я согласен с Джоном и скажу, что это нужно отметить любому, кто идет по этому маршруту. Я занимаюсь реализацией этого подхода и получаю обратную связь. – DivanMoller

+0

Я попробовал ваше предложение Арнис, и он действительно работает. Хотя я использовал appSettings, а не connectionStrings. Согласился, что это не лучший подход. Я не нашел идеального решения для этого, и я открыт для предложений. Спасибо за помощь. – DivanMoller

0

К сожалению, ответ на ваш вопрос "копировать и вставлять". Это всегда было правдой.

Ближайшей вещью к исключению из этого правила являются «новые» файлы настроек .NET 2.0. Поскольку структура и значения по умолчанию для них являются частью сборки, определяющей компонент, компонент при запуске может привести к тому, что значения по умолчанию будут записаны в конфигурацию приложений. Я предполагаю, что можно было бы связать это с куском кода для работы с installutil, чтобы заставить выписать значения по умолчанию до того, как будет запущено содержащее приложение, оставив значения по умолчанию в файле конфигурации, которые будут изменены до того, как приложение будет использовано в первый раз ,