2009-05-04 19 views
10

Ho utilizzato un componente MS ReportViewer in un sito Web per un po 'di tempo, ma recentemente ho ricevuto l'errore mostrato di seguito.Errore parser Microsoft ASP.NET ReportViewer

Parser Error Message: The base class includes the field 'xyz', but its type (Microsoft.Reporting.WebForms.ReportViewer) is not compatible with the type of control (Microsoft.Reporting.WebForms.ReportViewer).

<rsweb:ReportViewer ID="xyz" runat="server" Width="100%" Font-Names="Verdana" Font-Size="8pt" Height="400px" ProcessingMode="Local" ShowExportControls="false"> 

Ora, ottengo questo errore in Visual Studio, così come nella produzione. Ho installato il ReportViewer Redistributable in produzione.

In qualche modo mi manca un riferimento nel mio progetto o qualcosa del genere?

risposta

6

Ho scoperto la risposta: in qualche modo il riferimento alla versione 9 di Microsoft.Reporting.WebForms è passato alla versione 8. Ciò ha causato l'errore. Quindi eliminare il riferimento e aggiungere la versione corretta del riferimento sembra aver risolto il problema.

Edit:

Ebbene, secondo la versione precedente del file vbproj, era un riferimento a 9, nonostante che lo schermo riferimenti al progetto proprietà mi ha detto 8. Insomma io non sono davvero sicuro di quello è riuscito a farsi rovinare, ma ora sembra che funzioni.

Se qualcuno ha sperimentato questo o ha qualche intuizione, per favore contribuisci.

+0

ma dimmi una cosa come hai cancellato i riferimenti da un'applicazione asp.net? –

0

Avendo lo stesso problema. Pulire l'installazione di Windows 2008 Server con SQL Server 2005 e SQL Reporting. Il server ospita il sito. Installato ReportViewer 2008 SP1. Riferimenti Web.config versione 9.0.0.0.

Viene visualizzato lo stesso messaggio di errore: La classe di base include il campo ma il suo tipo (Microsoft.Reporting.WebForms.ReportViewer) non è compatibile con il tipo di controllo (Microsoft.Reporting.WebForms.ReportViewer).

Ha cercato online e molte persone hanno riscontrato lo stesso problema. Alcune persone suggeriscono di modificare manualmente il file di progetto. Sono riuscito a risolverlo impostando Versione specifica = True (Versione = 9.0.0.0) in Esplora soluzioni -> [Nome progetto Web] -> Riferimenti-> Microsoft.Reporting.WebForms-> Proprietà.

In uno degli ambienti abbiamo trovato anche dll di Microsoft.Reporting nella cartella bin web. E, erano in conflitto con le DLL registrate nel GAC. La cancellazione delle DLL ha risolto il problema.

2

A seguito di una nuova installazione, il mio progetto non ha compilato perché il riferimento al dll era rotto, così ho eliminato e ha aggiunto di nuovo, quindi la pagina web in cui il ReportViewer viene utilizzato ha dato un errore del parser:

The base class includes the field 'rprtReportsViewer', but its type (Microsoft.Reporting.WebForms.ReportViewer) is not compatible with the type of control (Microsoft.Reporting.WebForms.ReportViewer).

ho trovato un riferimento sulla pagina web con il numero di versione diversa da quella che avevo appena aggiunto:

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %> 

ho cambiato la versione a 9.0.0.0, e questa volta ha ottenuto un errore di compilazione quando rinfrescato il pagina:

CS0433: The type 'Microsoft.Reporting.WebForms.ReportViewer' exists in both 'c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\8.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll' and 'c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll' 

Ho quindi cercato la soluzione per "Microsoft.ReportViewer" e ho trovato più riferimenti nella compilazione.config:

<add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
    <add assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
    </assemblies> 
    <buildProviders> 
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </buildProviders> 

ho cambiato i numeri di versione anche qui e si è fermato gli errori

2

Potrebbe anche essere necessario per rimuovere da \ file bin:

 Microsoft.ReportViewer.Common.dll 
    Microsoft.ReportViewer.ProcessingObjectModel.dll 
    Microsoft.ReportViewer.WebForms.dll 
    Microsoft.ReportViewer.WinForms.dll 

ho semplicemente spostato in un sub directory.

0

Ho riscontrato questo problema su un server di produzione. Ho installato la versione corretta di ReportViewer e mi sono assicurato che tutti i riferimenti nel progetto puntassero alla versione corretta. Tuttavia, stavo ancora ricevendo errori.

Eventualmente ho risolto il problema andando su 'File temporanei ASP.NET' e cancellando i file per la mia app. Per fare ciò devi prima fermare l'app. Questo poi ha risolto il problema. Sui server DEV non avevo riscontrato questo problema perché dopo aver installato ReportViewer ho riavviato la macchina.

Spero che questo aiuti qualcuno. Ho tirato fuori molti capelli prima di risolvere questa particolare 'sfida'.

0

Riferimenti -> (Microsoft.ReportViewer.WebForms), fare clic con il tasto destro del mouse.

L'opzione Specifica versione, lasciala come falso.

Dopodiché, basta salvare ed eseguire nuovamente.

2

controllare la versione rdlc pagina come

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %> 
-2

mi sono imbattuto lo stesso errore. Ciò che ha funzionato per me è stato eliminare il riferimento Microsoft.ReportViewer.WebForms e aggiungerlo di nuovo.