2009-08-12 6 views
1

Я разрабатываю приложение для интеллектуального клиента n-уровня. Клиентская часть приложения разделена на два уровня. Интерфейсное приложение и клиентская бизнес-библиотека, которая извлекает и обслуживает данные для интерфейса. Данные предоставляются через коллекцию служб WCF net.tcp и http в зависимости от подключения клиента.Приложение Config Conundrum

Моя проблема заключается в том, что интерфейс ничего не знает о службах wcf (как мы хотим) конфигурации. Информация о привязке system.serviceModel хранится в конфигурации для lib, а не exe. Если я не скопирую раздел system.serviceModel в exe config, приложение не сможет найти конечные точки.

Так что я мог бы создать какой-то предварительной сборки событие, которое копирует app.config файл:

attrib -r "$(ProjectDir)app.config" copy "$(SolutionDir)Domain\Client\app.config" "$(ProjectDir)" 

, но это, честно говоря, это дерьмо (его прямая копия не сливать), и я хочу, лучший способ ... Любые идеи? Спасибо

+0

Любовь слово дилемму –

+0

Я имел эту проблему раньше , но забудьте, как я его решил :-) –

ответ

4

Вы пытались импортировать соответствующие разделы из внешнего файла конфигурации с помощью элемента configSource? last answer in this discussion предлагает решение, которое может сработать для вас.

Цитируется из этого обсуждения:

<!-- WCF Configuration Mappings in app.config --> 
<system.serviceModel> 
    <bindings configSource=".\CommonConfig\ServiceBindings.config" /> 
    <client configSource=".\CommonConfig\ServiceClient.config" /> 
</system.serviceModel> 

ServiceBindings.config:

<?xml version="1.0" encoding="utf-8" ?> 
<bindings> 
    <netTcpBinding> 
    <binding ... /> 
    </netTcpBinding> 
</bindings> 

ServiceClient.config (укороченный):

<?xml version="1.0" encoding="utf-8" ?> 
<client> 
    <endpoint ...> 
     ... 
    </endpoint> 
</client> 
+0

+1 отличный ответ - таким образом, большая часть конфигурации также может быть разделена между сервером и клиентом; в конце концов, обе стороны должны договориться о привязках, (некоторых) поведении и адресах конечных точек –

+0

Спасибо Fredrik! Отличный ответ! – jaimie