2009-12-17 17 views
11

He estado aprendiendo y construyendo servicios web JSONP usando WCF en fx3.5. Puede leer algunos de los ensayos que tuve al .NET ASMX - Returning Pure JSON? Finalmente obtuve una muestra en ejecución, pero ahora sí lo estoy, la he rastreado hasta mi aplicación.El tipo [nameHere] registrado para la extensión '[extensionHere]' no se pudo cargar

El web.config para el servicio:

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

estoy recibiendo el siguiente error y he intentado todo lo que ocurre para solucionarlo. Encontré algunos errores tipográficos (Servicio en vez de Servicio) salpicado a lo largo de mi código. Estoy usando el código de ejemplo encontrado en MSDN. Aquí está el error:

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 

¿Alguien tiene alguna idea sobre qué más puedo verificar? Existe un archivo DLL llamado RivWorks.Web.Service.dll, que se está creando y copiando en el directorio bin del sitio web. Los servicios Web.config se copian en el directorio de Servicios del sitio web. No tengo nada en conflicto en el sitio web web.config. Revisé todos los problemas de ortografía

+0

Definitivamente no es una respuesta oficial, pero quería compartir un poco de frustración con este problema exacto: en IIS tengo el Sitio A, que aloja la Aplicación A (App_A). Luego tengo un directorio virtual que hospeda la Aplicación B (App_B), también en el Sitio A. App_A está implementando una extensión personalizada similar a la anterior. El web.config de App_B heredaba esta extensión personalizada del web.config de App_A. Esto arrojaba el error exacto que se describe aquí. Esto fue totalmente mi culpa por no configurarlo correctamente. Solo quería compartir eso con todos. No estoy seguro si es una respuesta digna. – dyslexicanaboko

Respuesta

15

¿El dll (RivWorks.Web.Service.dll) está en la salida de compilación?

A continuación, tratar (por la extensión "jsonpMessageEncoding"):

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

Nota el espaciado diferente tanto en términos de " , " y retornos de carro.

Después de eso, me gustaría triplicar la cadena. Exe escribir una consola que hace referencia a la DLL que necesita (RivWorks.Web.Service), y la salida:

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

Esa es la cadena que desea en el xml, palabra por palabra. No incluya ningún espacio en blanco adicional en esta cadena.

+0

Se ejecutó la aplicación de la consola y la cadena volvió exactamente igual que yo. Lo capturé en una cadena var, lo inspeccioné, lo copié, lo pegué en mis servicios web.config y aún tengo el mismo error. ¿Otros pensamientos? –

+0

Y sí, la DLL está en el resultado de compilación. Uso BeyondCompare para moverme del área de mi proyecto de máquina local a mi directorio de host local. Además, desde allí va al directorio Dev en el servidor Dev (a través de BeyondCompare). Reviso cada paso del camino y puedo ver la versión más nueva cada vez. –

+0

Traté de tenerlo todo en una línea como se muestra y no hizo ninguna diferencia. :( –

Cuestiones relacionadas