2009-06-17 6 views
0

Ich habe ein einfaches ASP.NET-Webformular mit mehreren ReportViewer-Steuerelementen, die im lokalen Modus ausgeführt werden. Jedes Mal, wenn die Seite geladen wird, lädt jeder ReportViewer die Berichtsdefinition und generiert auch die dynamische Assembly expression_host neu. Dies ist offensichtlich zeitaufwendig und wird nicht sehr gut skalieren. Gibt es eine Möglichkeit, ReportViewer die Berichtsdefinition und die dynamischen Ausdruck_Host-Assemblies zwischenzuspeichern?ASP.NET ReportViewer Leistung im lokalen Modus (Ausdruck_Host-Regeneration)

Antwort

0

Nachdem Sie eine Vielzahl von Methoden getestet haben, war die bisher beste Lösung, den gesamten Code aus dem Bericht selbst zu entfernen. Danach ist die Anfragezeit dramatisch zurückgegangen.

+0

Könnten Sie näher auf "den gesamten Code entfernen" gehen? War das benutzerdefinierter C#/VB-Code oder Ausdrücke? – andrej351

0

Das Problem ist das Aufrufen von Reset für das Report-Viewer-Objekt. Sie müssen den Berichts-Viewer zwischenspeichern.

Rufen Sie Clear auch in der Datei report.localreport.dataset auf, wenn Sie Objekte als Datenquelle verwenden.

+0

Reset wird nicht aufgerufen; Das Caching ist problematisch, da sich die Datenquelleninstanzen für jeden Benutzer (und für alle Benutzer) zwischen den Seitenlebenszyklen ändern. Das Löschen des Datensatzes hat keine Auswirkung und ist für das Problem nicht relevant. Die effizienteste Lösung bestand darin, jeglichen Code aus dem Bericht selbst zu entfernen, um die dynamische Neukompilierung bei jeder neuen Seitenanforderung zu vermeiden. –

Verwandte Themen