2009-12-17 15 views
11

Ho studiato e creato servizi Web JSONP utilizzando WCF su fx3.5. Puoi leggere alcune delle prove che ho avuto a .NET ASMX - Returning Pure JSON?. Ho finalmente ottenuto un campione in esecuzione, ma ora sono io lo ho seguito nella mia app.Impossibile caricare il tipo [nomeHere] registrato per l'estensione "[extensionHere]"

Il web.config per il servizio:

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

sto ottenendo il seguente errore e ho provato tutto quello che mi viene in mente per risolvere il problema. Ho trovato alcuni errori di battitura (Sevice anziché Service) sparsi nel mio codice. Sto usando il codice di esempio trovato a MSDN. Ecco l'errore:

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 

Qualcuno ha qualche idea su cos'altro posso controllare? Esiste una DLL chiamata RivWorks.Web.Service.dll, che viene creata e copiata nella directory bin del sito Web. I servizi Web.config vengono copiati nella directory dei servizi del sito Web. Non ho nulla di conflittuale nel web.config del sito web. Ho controllato tutti i problemi di ortografia.

+0

Questa non è sicuramente una risposta ufficiale, ma volevo solo condividere alcune frustrazioni che avevo con questo problema esatto: in IIS ho sito A, che ospita l'applicazione A (App_A). Quindi ho una directory virtuale che ospita l'applicazione B (App_B), anche nel sito A. App_A sta implementando un'estensione personalizzata simile a quella precedente. Il web.config di App_B stava ereditando questa estensione personalizzata dal web.config di App_A. Questo stava lanciando l'errore esatto descritto qui. Questo è stato totalmente colpa mia per non averlo configurato correttamente. Volevo solo condividerlo con tutti. Non sono sicuro se sia la risposta degna. – dyslexicanaboko

risposta

15

La dll (RivWorks.Web.Service.dll) è nell'output di build?

Avanti, prova (per l'estensione "jsonpMessageEncoding"):

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

nota la diversa spaziatura sia in termini di " , " e ritorni a capo.

Dopo di che, avrei triplicato controllare la stringa. Scrivi un exe console che fa riferimento al dll è necessario (RivWorks.Web.Service), e l'uscita:

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

Quella è la stringa desiderata nel xml, parola per parola. Non includere spazi bianchi extra in questa stringa.

+0

Ha eseguito l'app della console e la stringa è tornata esattamente come l'ho. Lo ho catturato in una stringa var, l'ho ispezionato, copiato, incollato nel mio servizio web.config e ho ancora lo stesso errore. Altri pensieri? –

+0

E sì, la DLL è nell'output di build. Io uso BeyondCompare per passare dalla mia area di progetto della macchina locale alla mia directory localhost. Inoltre, da lì va alla directory Dev sul server Dev (tramite BeyondCompare). Controllo ogni passaggio e riesco a vedere ogni volta la nuova build. –

+0

Ho provato ad avere tutto su una riga come si mostra e non ha fatto alcuna differenza. :( –

Problemi correlati