Как использовать настройки приложения из библиотеки классов? - PullRequest
1 голос
/ 07 марта 2011

У меня есть два проекта.

Один - это прокси-проект WCF, который ссылается на веб-сервис.Я хочу, чтобы этот проект содержал всю мою логику взаимодействия с веб-сервисом.

У меня также есть тестовый проект, который я хочу назвать этим прокси-проектом.

Проблема в том, что у меня есть всемои настройки конфигурации, такие как конечные точки и т. д. в проекте прокси WCF.Когда я запускаю его, я получаю эту ошибку, говоря, что не может найти конечные точки.

Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'AlumniWebService.IAlumniWebService' в разделе конфигурации клиента ServiceModel.Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за того, что ни один элемент конечной точки, соответствующий этому контракту, не найден в элементе client.

Я должен поместить всю конфигурацию веб-службы WCF втестовый проект, чтобы я мог позвонить в веб-сервис.

Этот веб-сервис, вероятно, будет использоваться не только этим тестовым проектом, а, возможно, и несколькими другими веб-приложениями, поэтому я хотел бы, чтобы моя конфигурация была INпроект прокси, чтобы не иметь нескольких версий.

Как получить веб-конфигурацию для ссылки на проект прокси?

Ответы [ 2 ]

3 голосов
/ 07 марта 2011

По умолчанию система конфигурации .NET не просматривает файлы конфигурации библиотеки классов. Они создаются как образец, как помощник - но они не используются. Вам нужно поместить свою конфигурацию в основное приложение, которое будет использовать вашу библиотеку классов, чтобы она была «активирована» и использовалась.

Единственное, что вы можете сделать с небольшим количеством ручной работы, это:

  • поместить каждый из подэлементов <system.serviceModel> в отдельный файл
  • ссылки на те из вашей основной конфигурации:

    <system.serviceModel>
       <behaviors configSource="behaviors.config" />
       <bindings configSource="bindings.config" />
       <client configSource="client.config" />
    </system.serviceModel>
    

Таким образом, вы можете иметь один набор «внешних» конфигурационных файлов и ссылаться на них из любого количества других проектов.

Visual Studio не знает об этом должным образом и выделит это как ошибки - но поверьте мне - это работает! (это просто недостаток VS, который не понимает атрибут configSource= в любом разделе конфигурации)

Эти внешние файлы конфигурации будут содержать только биты для этого конкретного раздела, поэтому ваш bindings.config будет выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<bindings>
    <basicHttpBinding>
         <binding name="YourBindingName" 
                  receiveTimeout="00:02:00" sendTimeout="00:02:00"
                  maxBufferSize="512000" maxBufferPoolSize="524288" 
                  maxReceivedMessageSize="512000"
                  useDefaultWebProxy="false">
              <security mode="None" />
         </binding>
    </basicHttpBinding>
</bindings>
0 голосов
/ 07 марта 2011

Можно импортировать пользовательский файл web.config (поддержка web.config с некоторыми настройками для приложения) в основной файл web.config, но я не думаю, что вы можете импортировать конфигурацию конечных точек службы из поддержки web.config в основной файл web.config.

Если вас интересует только настройка службы в тестовом приложении, просто добавьте ссылку на сервис в тестовое приложение, и Visual Studio автоматически настроит ваши параметры в тестовом приложении в зависимости от конфигурации вашего хост-приложения.

...