2009-05-04 14 views
10

Ich habe eine MS ReportViewer-Komponente in einer Website für eine Weile jetzt verwendet, aber vor kurzem habe ich den Fehler unten angezeigt bekommen.Microsoft ASP.NET ReportViewer Parser Fehler

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

Nun bekomme ich diesen Fehler in Visual Studio sowie in der Produktion. Ich habe den ReportViewer Redistributable in der Produktion installiert.

Fehle ich irgendwie eine Referenz in meinem Projekt oder etwas?

Antwort

6

Ich entdeckte die Antwort: Irgendwie wurde der Verweis auf Version 9 von Microsoft.Reporting.WebForms auf Version 8 geschaltet. Dies verursachte den Fehler. Daher scheint das Löschen des Verweises und das Hinzufügen der richtigen Version des Verweises das Problem behoben zu haben.

Edit:

Nun, nach der vorherigen Version der Datei .vbproj, war es ein Verweis auf 9, trotz, dass die Projektreferenzen Eigenschaften Bildschirm mir gesagt, 8. Kurz gesagt ich bin nicht wirklich sicher, was geschafft, vermasselt zu werden, aber es scheint jetzt zu funktionieren.

Wenn jemand dies erfahren hat oder einen Einblick hat, bitte tragen Sie dazu bei.

+0

aber erzählen Sie mir eine Sache, wie Sie die Referenzen aus einer asp.net-Anwendung gelöscht? –

0

Mit dem gleichen Problem. Reinigen Sie die Windows 2008 Server-Installation mit SQL Server 2005 und SQL Reporting. Der Server hostet die Site. Installierter ReportViewer 2008 SP1. Web.config verweist auf Version 9.0.0.0.

Die gleiche Fehlermeldung wird angezeigt: Die Basisklasse enthält das Feld, aber sein Typ (Microsoft.Reporting.WebForms.ReportViewer) ist nicht mit dem Steuerelementtyp (Microsoft.Reporting.WebForms.ReportViewer) kompatibel.

Gesucht online und viele Leute erleben das gleiche Problem. Manche Leute schlagen vor, die Projektdatei manuell zu bearbeiten. Ich konnte es beheben, indem ich bestimmte Version = True (Version = 9.0.0.0) im Projektmappen-Explorer -> [Web Project Name] -> Referenzen -> Microsoft.Reporting.WebForms-> Properties.

In einer der Umgebungen haben wir auch Microsoft.Reporting dlls im Web Bin-Ordner gefunden. Und sie widersprachen den im GAC registrierten Dlls. Löschen der DLLs löste das Problem.

2

Nach einer Neuinstallation, mein Projekt kompilieren nicht, weil der Verweis auf die dll war gebrochen, so dass ich es gelöscht und hinzugefügt, um es wieder, dann die Web-Seite, wo der Report verwendet wird, einen Parser-Fehler gab:

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

fand ich einen Hinweis auf der Webseite mit der Versionsnummer anders als die, die ich gerade hinzugefügt hatte:

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

ich die Version 9.0.0.0 geändert, und dieses Mal einen Compiler-Fehler bekam, wenn ich erfrischt die Seite:

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' 

Ich suchte dann die Lösung für "Microsoft.ReportViewer" und fand mehr Referenzen in Kompilierung.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> 

änderte ich die Versionsnummern auch hier und es stoppte den Fehler

2

Sie auch von \ bin-Dateien entfernen müssen:

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

Ich zog sie in eine Unter Verzeichnis.

0

Ich hatte dieses Problem auf einem Produktionsserver. Ich habe die richtige Version von ReportViewer installiert und sichergestellt, dass alle Referenzen im Projekt auf die richtige Version verweisen. Ich bekam jedoch immer noch Fehler.

Schließlich habe ich das Problem gelöst, indem ich auf "Temporäre ASP.NET-Dateien" gehe und die Dateien für meine App lösche. Um dies zu tun, müssen Sie zuerst die App stoppen. Dies löste dann das Problem. Auf DEV-Servern war dieses Problem nicht aufgetreten, da ich nach der Installation von ReportViewer den Computer neu gestartet habe.

Ich hoffe, das hilft jemandem. Ich zog eine Menge Haare aus, bevor ich diese besondere "Herausforderung" löste.

0

Referenzen -> (Microsoft.ReportViewer.WebForms), klicken Sie mit der rechten Maustaste.

Die Option Version angeben, lassen Sie sie als falsch.

Danach speichern und erneut ausführen.

2

Überprüfen Sie Ihre Seite rdlc Version wie

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

ich über den gleichen Fehler kam. Was für mich funktionierte, war, den Verweis Microsoft.ReportViewer.WebForms zu löschen und es erneut hinzuzufügen.