Не удалось загрузить тип [nameHere], зарегистрированный для расширения '[extensionHere]' - PullRequest
12 голосов
/ 18 декабря 2009

Я изучал и строил Web-сервисы JSONP с использованием WCF на fx3.5. Вы можете прочитать некоторые испытания, которые у меня были на .NET ASMX - Возвращение чистого JSON? Я наконец запустил образец, но теперь я вхожу в его приложение.

  • RivWorks.Web - веб-сайт - расположен по адресу http://dev.example.com
  • RivWorks.Web.Service - новые службы JSONP - расположены в http://dev.example.com/services/ - здесь находится web.config для служб.

Web.config для службы:

  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="JsonpServiceBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="RivWorks.Web.Service.CustomerService">
        <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="jsonpBinding"
                  behaviorConfiguration="JsonpServiceBehavior"
                  contract="RivWorks.Web.Service.ICustomerService" />
      </service>
      <service name="RivWorks.Web.Service.NegotiateService">
          <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="jsonpBinding"
                  behaviorConfiguration="JsonpServiceBehavior"
                  contract="RivWorks.Web.Service.INegotiateService" />
      </service>
    </services>
    <bindings>
      <customBinding>
        <binding name="jsonpBinding" >
          <jsonpMessageEncoding />
          <httpTransport manualAddressing="true"/>
        </binding>
      </customBinding>
    </bindings>    
    <extensions>
      <bindingElementExtensions>
        <add name="jsonpMessageEncoding"
             type="RivWorks.Web.Service.JSONP.JsonpBindingExtension
                 , RivWorks.Web.Service
                 , Version=1.0.0.0
                 , Culture=neutral
                 , PublicKeyToken=null"/>
      </bindingElementExtensions>
    </extensions>
  </system.serviceModel>

Я получаю следующую ошибку и перепробовал все, что мог придумать, чтобы ее исправить. Нашел несколько опечаток (Sevice вместо Service), разбросанных по всему коду. Я использую образец кода, найденный на MSDN . Вот ошибка:

Configuration Error Description:** An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: The type 'RivWorks.Web.Service.JSONP.JsonpBindingExtension
                , RivWorks.Web.Service
                , Version=1.0.0.0
                , Culture=neutral
                , PublicKeyToken=null' registered for extension 'jsonpMessageEncoding' could not be loaded.

Source Error:

Line 58:  <customBinding>
Line 59:      <binding name="jsonpBinding">
Line 60:          <jsonpMessageEncoding />
Line 61:          <httpTransport manualAddressing="true" />
Line 62:      <binding>

Source File: C:\RivWorks\dev\services\web.config    Line: 60

Version Information: Microsoft .NET Framework Version:2.0.50727.3603; ASP.NET Version:2.0.50727.3082

У кого-нибудь есть идеи о том, что еще я могу проверить? Существует библиотека DLL с именем RivWorks.Web.Service.dll, она создается и копируется в каталог bin веб-сайта. Службы Web.config копируются в каталог служб веб-сайта. У меня нет ничего конфликтующего в веб-сайте web.config. Я проверил все проблемы правописания.

1 Ответ

15 голосов
/ 18 декабря 2009

Является ли dll (RivWorks.Web.Service.dll) в выводе сборки?

Далее попробуйте (для расширения "jsonpMessageEncoding"):

type="RivWorks.Web.Service.JSONP.JsonpBindingExtension, RivWorks.Web.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"

Обратите внимание на разный интервал как с точки зрения " , ", так и с возвратом каретки.

После этого я бы трижды проверил строку. Напишите консольный exe-файл, который ссылается на необходимую вам dll (RivWorks.Web.Service), и выведите:

Console.WriteLine(
     typeof(RivWorks.Web.Service.JSONP.JsonpBindingExtension)
     .AssemblyQualifiedName);

Это строка, которую вы хотите в xml, дословно. Не включайте в эту строку лишние пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...