2009-12-17 2 views
11

J'ai appris et développé des services Web JSONP en utilisant WCF sur fx3.5. Vous pouvez lire quelques-uns des essais que j'ai eu à .NET ASMX - Returning Pure JSON? J'ai finalement eu un échantillon en cours d'exécution, mais maintenant je suis je suis en train de queue dans mon application.Le type [nameHere] enregistré pour l'extension '[extensionHere]' n'a pas pu être chargé

Le web.config pour le service:

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

Je reçois l'erreur suivante et j'ai tout essayé, je peux penser à le réparer. Trouvé quelques fautes de frappe (Sevice au lieu de Service) saupoudré dans mon code. J'utilise l'exemple de code trouvé au MSDN. Voici l'erreur:

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 

Est-ce que quelqu'un a des idées sur quoi d'autre je peux vérifier? Il y a une DLL appelée RivWorks.Web.Service.dll, elle est construite et copiée dans le répertoire bin du site web. Les services Web.config sont en cours de copie dans le répertoire Services du site Web. Je n'ai rien de contradictoire dans le web.config du site web. J'ai vérifié tous les problèmes d'orthographe.

+0

Ce n'est certainement pas une réponse officielle, mais je voulais juste partager une certaine frustration que j'ai eu avec ce problème précis: Dans IIS j'ai le site A, qui héberge l'application A (App_A). J'ai alors un répertoire virtuel hébergeant l'application B (App_B), sous le site A également. App_A implémente une extension personnalisée similaire à celle ci-dessus. Le fichier web.config de App_B héritait de cette extension personnalisée du fichier web.config de App_A. Cela jetait l'erreur exacte décrite ici. C'était totalement de ma faute si je ne le configurais pas correctement. Je voulais juste partager cela avec tout le monde. Je ne sais pas si c'est une réponse digne. – dyslexicanaboko

Répondre

15

La DLL (RivWorks.Web.Service.dll) est-elle dans la sortie de construction?

Ensuite, essayez (pour l'extension "jsonpMessageEncoding"):

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

Notez l'espacement différent en termes de " , " et retours chariot.

Après cela, je trierais la chaîne. Ecrire une console exe qui fait référence à la dll dont vous avez besoin (RivWorks.Web.Service), et la sortie:

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

C'est la chaîne que vous voulez dans le xml, mot pour mot. N'incluez aucun espace supplémentaire dans cette chaîne.

+0

Ran l'application de la console et la chaîne est revenue exactement comme je l'ai. Capturé dans une chaîne var, inspecté, copié, collé dans mes services web.config et toujours la même erreur. D'autres pensées? –

+0

Et oui, la DLL est dans la sortie de construction. J'utilise BeyondCompare pour passer de ma zone de projet de machine locale à mon répertoire localhost. Aussi, à partir de là, il va dans le répertoire Dev sur le serveur Dev (via BeyondCompare). Je vérifie chaque étape et je peux voir la nouvelle version à chaque fois. –

+0

J'ai essayé de tout avoir sur une ligne comme vous le montrez et cela n'a fait aucune différence. :( –

Questions connexes