Dlaczego nie znaleziono mojego niestandardowego typu elementu rozszerzenia zachowania WCF?

Mam rozwiązanie, które zawiera dwa projekty. Jeden projekt to projekt aplikacji sieci Web ASP.NET, a jeden to biblioteka klas. Aplikacja internetowa ma odwołanie do projektu do biblioteki klas. Żadna z nich nie jest silnie nazwana.

W bibliotece klas, którą nazwiemy „Framework”, mam zachowanie punktu końcowego (implementację IEndpointBehavior) i element konfiguracyjny (klasa pochodząca z BehaviorExtensionsElement). Element konfiguracyjny jest taki, że mogę dołączyć zachowanie punktu końcowego do usługi poprzez konfigurację.

W aplikacji internetowej mam usługę WCF z obsługą AJAX. W web.config mam skonfigurowaną usługę AJAX do korzystania z mojego niestandardowego zachowania. Sekcja system.serviceModel konfiguracji jest dość standardowa i wygląda tak:

<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>

W czasie wykonywania działa to doskonale. Usługa WCF z włączoną obsługą AJAX poprawnie używa mojego niestandardowego skonfigurowanego zachowania punktu końcowego.

Problem polega na tym, że próbuję dodać nową usługę AJAX WCF. Jeśli to zrobię Dodaj -> Nowy element ... i wybierz opcję „Usługa WCF z obsługą AJAX”, mogę oglądać, jak dodaje plik i kod źródłowy .svc, ale gdy dochodzi do aktualizacji pliku web.config, pojawia się ten błąd:

Plik konfiguracyjny nie jest prawidłowym plikiem konfiguracyjnym dla biblioteki usług WCF.

Typ „Framework.MyBehaviorExtensionsElement, Framework, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null” zarejestrowany dla rozszerzenia „customEndpointBehavior” nie mógł zostać załadowany.

Oczywiście konfiguracja jest całkowicie poprawna, ponieważ działa idealnie w czasie wykonywania. Jeśli tymczasowo usunę element z mojej konfiguracji zachowania, a następnie dodasz usługę WCF z obsługą AJAX, wszystko pójdzie bez przeszkód.

Niestety, w większym projekcie, w którym będziemy mieli wiele usług z różnymi konfiguracjami, usunięcie wszystkich niestandardowych zachowań będzie tymczasowo podatne na błędy. Chociaż zdaję sobie sprawę, że mogę iść bez użycia kreatora i robić wszystko ręcznie, nie każdy może, i byłoby miło móc po prostu użyć produktu, który miał być używany - czarodzieje i wszyscy.

Dlaczego nie znaleziono mojego niestandardowego typu elementu rozszerzenia zachowania WCF?

Aktualizacje / wyjaśnienia:

Działa w czasie wykonywania, po prostu nie projektuje czasu.Zespół Framework znajduje się w folderze bin projektu WWW, gdy próbuję dodać usługę.Chociaż mogłem ręcznie dodawać usługi („bez konfiguracji”), potrzebuję gotowego szablonu produktu do pracy - to jest cały cel pytania.Ten problem jest widoczny w programie Visual Studio 2008.W VS 2010 wydaje się, że problem został rozwiązany.

Złożyłem ten problem na Microsoft Connect i okazuje się, że albo musisz umieścić niestandardowy element konfiguracji w GAC, albo umieścić go w folderze IDE. Nie naprawią tego, przynajmniej na razie. Opublikowałem obejście, które podali jako „odpowiedź” na to pytanie.

questionAnswers(10)

yourAnswerToTheQuestion