Почему не найден мой пользовательский тип элемента расширения поведения WCF?

У меня есть решение, которое содержит два проекта. Один проект - это проект веб-приложения ASP.NET, а другой - библиотека классов. У веб-приложения есть проектная ссылка на библиотеку классов. Ни один из них не является строго названным.

В библиотеке классов, которую я назову «Framework», у меня есть поведение конечной точки (реализация IEndpointBehavior) и элемент конфигурации (класс, производный от BehaviorExtensionsElement). Элемент конфигурации позволяет подключить поведение конечной точки к сервису через конфигурацию.

В веб-приложении у меня есть служба WCF с поддержкой AJAX. В файле web.config у меня есть служба AJAX, настроенная для использования моего собственного поведения. Раздел system.serviceModel конфигурации довольно стандартный и выглядит следующим образом:

<system.serviceModel>
 <behaviors>
  <endpointBehaviors>
   <behavior name="MyEndpointBehavior">
    <enableWebScript />
    <customEndpointBehavior />
   </behavior>
  </endpointBehaviors>
 </behaviors>
 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
 <services>
 <service name="WebSite.AjaxService">
  <endpoint
           address=""
           behaviorConfiguration="MyEndpointBehavior"
           binding="webHttpBinding"
           contract="WebSite.AjaxService" />
  </service>
 </services>
 <extensions>
  <behaviorExtensions>
   <add
       name="customEndpointBehavior"
       type="Framework.MyBehaviorExtensionsElement, Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </behaviorExtensions>
 </extensions>
</system.serviceModel>

Во время выполнения это работает отлично. Служба WCF с поддержкой AJAX правильно использует мое настроенное поведение конечной точки.

Проблема в том, когда я пытаюсь добавить новую службу AJAX WCF. Если я добавлю -> Новый элемент ... и выберу "Службу WCF с поддержкой AJAX", я могу посмотреть, как он добавляет файл .svc и код, но когда он обновляет файл web.config, я получаю эту ошибку:

Файл конфигурации не является допустимым файлом конфигурации для библиотеки служб WCF.

Не удалось загрузить тип Framework.MyBehaviorExtensionsElement, Framework, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null, зарегистрированный для расширения «customEndpointBehavior».

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

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

Почему не найден мой пользовательский тип элемента расширения поведения WCF?

Обновления / разъяснения:

Он работает во время выполнения, но не во время разработки.Сборка Framework находится в папке bin веб-проекта, когда я пытаюсь добавить службу.Хотя я мог бы добавлять сервисы вручную («без конфигурации»), мне нужен готовый шаблон элемента для работы - вот и вся цель вопроса.Эта проблема видна в Visual Studio 2008.В VS 2010 это, кажется, решено.

Я подал эту проблему на Microsoft Connect&nbsp;и оказывается, что вы должны либо поместить свой пользовательский элемент конфигурации в GAC, либо поместить его в папку IDE. Они не будут это исправлять, по крайней мере пока. Я разместил обходной путь, который они предоставили в качестве «ответа» на этот вопрос.