SSRS: Reports bleiben beim Laden hängen
avatar

Das Problem

Nach der Fertigstellung eines Reports hatte ich das Problem, dass er auf dem Rechner eines Kollegen nicht angezeigt wurde, wenn dieser ihn über den SSRS Report Viewer aufrief. Die Mitteilung, dass der Report geladen wird, wurde unendlich lange angezeigt.

Die Lösung

Während der Fehlersuche stieß ich in den Report-Server-Logs auf den Fehler:

[HttpHandlerInputException: Missing URL parameter: IterationId] 

Im Laufe der weiteren Recherche ergab sich, dass der Fehler nur bei dem Internet-Explorer des Kollegen (Version 11) auftrat. Wenn ich den Report auf seinem PC mit einem anderen Browser öffnete, wurde er korrekt geladen. Der Fehler trat in dem von mir verwendeten Internet-Explorer (ebenfalls in Version 11) nicht auf. Der Fehler betraf weiterhin nur diesen einen Report, alle anderen funktionierten einwandfrei.

Es stellte sich heraus, dass der Fehler nur dann auftrat, wenn der Kompatibilitätsmodus nicht aktiviert wurde.

Nach einiger Zeit stieß ich auf den Grund des Problems: In dem Link zu dem Bild intern verwendeten Bild „blank.gif“ wird der Parameter „IterationId=0“ nicht angehängt, weshalb des Bild sich nicht laden lässt. Bei Verwendung des Line-Controls wird dieses Bild aber genutzt, somit tritt das Problem in Reports die das Line-Control enthalten auf.

Es gibt nur mehrere Varianten das Problem zu lösen:

  • Vermeidung des Line-Control zu verwenden.
  • Global.asax-Codebehind umschreiben, damit immer ein „IterationId=0“ angehängt wird, wenn es sich um einen „Gecko-Browser“ handelt. Auch Internet-Explorer 11 identifiziert sich, sofern der Kompatibilitätsmodus nicht verwendet wird, im UserAgent als „like Gecko“-Browser. Hierbei können jedoch mögliche Seiteneffekte nicht ausgeschlossen werden , diese Methode ist also mit Vorsicht zu verwenden.
  • erzwingen des Kompatibilitätsmodus für die Report-Viewer-Seite

Fazit

Eine richtig schöne Lösung konnte ich für das Problem nicht finden, denn jede mögliche Lösung hat Ihre Nachteile:

  • wenn der Kompatibilitätsmodus erzwungen wird, könnte sein, dass er einem neuen Client nicht aktiviert ist und der Report dort nicht läuft.
  • Das Umschreiben der Global.asax mag im Einzelfall funktionieren, bei eventuellen Fehlfunktionen, die sich vielleicht erst Wochen oder Monate später zeigen, ist jedoch fraglich, ob der Administrator diese Änderung noch im Hinterkopf behalten hat.
  • Die Vermeidung des Line-Controls ist am sichersten, jedoch ist der Report-Entwickler dadurch gewissen Einschränkungen unterworfen.

In meinem Fall habe ich mich dafür entschieden auf das Line-Control zu verzichten und die gewünschte Linie mit einer darüber befindlichen Tabellen darzustellen (in der letzten Tabellenzeile mit „Border-Bottom“).

Letztendlich muss also immer abgewägt werden welche Lösung für den Einzelfall in Betracht gezogen werden kann.

Links

[1] http://stackoverflow.com/questions/28049691/ssrs-report-viewer-report-chart-fails-to-display-in-ie11

[2] http://dyslexicanaboko.blogspot.de/2012/11/ssrs-report-viewer-control-broken-image.html

[3] https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b44a0452-d71a-4e69-b7e0-af74b9f6bde7/missing-url-parameter-iterationid?forum=sqlreportingservices

 

Schreibe einen Kommentar