2009-02-24 10 views
21

L'errore completo èClasse di base include il campo 'X', ma il suo tipo (System.Web.UI.ScriptManager) non è compatibile con il tipo di controllo (System.Web.UI.ScriptManager)

La classe base include il campo 'ScriptManager1', ma il suo tipo (System.Web.UI.ScriptManager) non è compatibile con il tipo di controllo (System.Web.UI.ScriptManager).

Qualcun altro ha riscontrato questo errore?

+0

Sembra essere un duplicato. Fare riferimento alla risposta di Mitchell qui: http://stackoverflow.com/questions/582492/working-with-vs2008-3-5-asp-ajax-site-on-a-2-0sp1-ajax-extesnion-1-0-server –

risposta

35

sono riuscito a risolvere il problema con l'aggiunta di questo al web.config:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> 
       <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Credo che costringe il runtime .NET per utilizzare le nuove versioni di quelle assemblee.

7

Ho riscontrato questo problema durante l'aggiornamento di un'applicazione Web da .NET 2.0 a 3.5.

Controlla che il tuo web.config sia impostato correttamente per .NET 3.5. Ho aggiunto/cambiato la seguente:

<configSections> 
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
     <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
     </sectionGroup> 
     </sectionGroup> 
    </sectionGroup> 
    </configSections> 

     <assemblies> 
     <!--<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>--> 
     <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     </assemblies> 

    <httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
    <httpHandlers> 



     <pages enableSessionState="true" validateRequest="true"> 
      <controls> 
     <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </controls> 
     </pages> 

    <httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpModules> 

0

Abbiamo avuto un problema molto simile. La piattaforma di sviluppo ha funzionato bene, ma una volta che il sito è stato distribuito nel sito di test, si è rotto con lo stesso messaggio del poster originale sopra. Abbiamo sottodirectory nella nostra directory di controlli per raggruppare i controlli utente. Il problema sembrava essere un controllo nella sottodirectory che cercava di utilizzare un controllo nella directory sopra di esso. La nostra prima correzione era di clonare il controllo di livello superiore nella sottodirectory. Abbiamo quindi deciso di creare una sottodirectory parallela parallela e di parcheggiare il controllo lì. Ciò risolveva il problema senza dover ricorrere (a) all'appiattimento della struttura della directory dei controlli o (b) clonare lo stesso controllo in varie sottodirectory.

Quindi la nostra soluzione è di non fare mai riferimento a un controllo in una directory padre da un controllo utente in una sottodirectory.

Spero che questo aiuti.

0

Questo può anche essere risolto cambiando il riferimento del progetto a System.Web.Extensions 1.0.61025 o altra versione, Assicurarsi che il riferimento del progetto, web config e il toolkit ajax corrispondano tutti alla stessa versione.

2

L'aggiunta della sezione <runtime> ha risolto il problema sui nostri computer di sviluppo e server di test, ma non sui nostri server live.

Si scopre che se il file web.config contiene un attributo xmlns di xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" quindi si otterrà un conflitto GAC:

BAD.web.config 
<?xml version="1.0"?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
etc 

ma questa versione dalla macchina Devt va bene:

GOOD.web.config 
<?xml version="1.0"?> 
<configuration> 
etc 

Quindi assicurati che il riferimento 2.0 sia rimosso dalla parte superiore del tuo file web.config.

0

Abbiamo avuto questo stesso problema quando precompilare la nostra applicazione dalla riga di comando utilizzando il "applicazione è aggiornabile" bandiera:

aspnet_compiler.exe -u 

rimuovere il flag -u risolto questo problema. Non chiedermi perché!

1

È inoltre possibile risolvere questo problema nel file .vbproj (nel mio caso). Controllare queste voci:

<Reference Include="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 
<Reference Include="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 

Questo sembra imporre anche l'uso delle DLL versione 3.5.

0

Problema molto simile. "La classe di base include il campo 'WebUserControl1', ma il suo tipo (common_WebUserControl) è ..." ha cambiato i file markup CodeFile=-CodeBehind=

0

nel mio caso, appena acceso il quadro accumulo 2,0-3,5.

Questo viene fatto facendo clic con il pulsante destro del mouse sul nome del progetto (parte superiore di solution explorer) e selezionare "Pagine delle proprietà". da lì, selezionare l'opzione di compilazione e modificare il framework.

Dovrebbe aggiornare web.config e tutti i riferimenti necessari.

HTH

Dave

0

avuto un problema simile aggiornamento 3,5-4,0. Nel mio caso, c'è un sito Web di root e directory di applicazioni IIS virtuali al di sotto di questo.

Il codice ha funzionato bene nelle aree di sviluppo e di allestimento.

Non appena è andato sul server di produzione, si è bloccato. Anche se il codice era lo stesso.

La mia soluzione era eliminare la directory virtuale e ricrearla. Assicurarsi che il pool di applicazioni sia corretto e che la versione di asp.net sia corretta. (I miei server sono Windows Server 2003 con IIS6).

Un'altra nota importante: non è possibile eseguire più versioni di asp.net nello stesso pool di applicazioni.

0

"La classe di base include il campo 'ScriptManager1', ma il suo tipo (System.Web.UI.ScriptManager) non è compatibile con il tipo di controllo (System.Web.UI.ScriptManager)."

Qualcun altro ha riscontrato questo errore?

Ho avuto questo tipo di errore più volte, anche se non specificamente con scriptmanager. Fondamentalmente succede quando hai un controllo di un tipo sulla pagina. E diciamo che sei stato ozioso per un po '. Ma poi hai eliminato il controllo e ne hai messo un altro al suo posto con lo stesso ID, cioè quando può accadere. Credo che sia collegato o creato da un aspx.designer.cs obsoleto.

Per risolvere il problema. Ho dovuto cambiare il nome dell'ID del controllo o ricostruire la soluzione. Penso che ci sia un altro modo. Penso che se hai un file aspx.designer.cs del nome del file aspx puoi cambiarlo anche lì.

Problemi correlati