Wie behandeln Berichts-viewer-Sitzung abgelaufen Ausnahme

Ich habe die folgende situation:

Microsoft Report Viewer 2010 ist zum anzeigen von berichten verwendet (.rdlc-Dateien) im lokalen Modus in einem ASP.NET web-Anwendung. Die report-Daten lieferte durch die Zuordnung einer datasource im CodeBehind einer ASPX-Seite. Hier ist ein Beispiel:

if(!IsPostBack){
ReportViewer1.Reset();
ReportDataSource reportDataSource = new ReportDataSource();

reportDataSource.Name = "DataContainerType";
reportDataSource.Value = DatasourceOnPage;
reportDataSource.DataSourceId = "DatasourceOnPageID";
reportDataSource.DataMember = "DataSourceView";

ReportViewer1.ProcessingMode = ProcessingMode.Local;
ReportViewer1.LocalReport.DisplayName = "ReportName";
ReportViewer1.LocalReport.ReportEmbeddedResource = "Reportfile.rdlc";
ReportViewer1.LocalReport.DataSources.Add(reportDataSource);
}

Normalerweise sind das die großen Werke, jeder Bericht, den wir haben, lädt einwandfrei.

, Wenn ich die Seite geöffnet, bis der Arbeitsprozess recycelt, dann versuchen, den Bericht aktualisieren oder zu tun, jede Art von postback auf der Bericht-Seite, erhalte ich eine (nicht behandelte) Ausnahme "ASP.NET Sitzung ist abgelaufen".

Informationen zur Ausnahme:
Der Ausnahme-Typ: AspNetSessionExpiredException
Exception message: Die ASP.NET-Sitzung ist abgelaufen oder konnte nicht gefunden >werden.
bei Microsoft.Die Berichterstattung.WebForms.ViewerDataOperation..ctor()
bei Microsoft.Die Berichterstattung.WebForms.HttpHandler.GetHandler(String operationType)
bei Microsoft.Die Berichterstattung.WebForms.HttpHandler.ProcessRequest(HttpContext context)
bei >System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionS>tep.Execute()
System.Web.HttpApplication.ExecuteStep(IExecutionStep Schritt, Boolean& >completedSynchronously)

IIS festgelegt ist, zu recyceln jeden morgen um 5 Uhr auf, Wir nutzen die InProc-Einstellung in der web.config, so offensichtlich, dass die session verloren. Wenn ich das verstehen ASP.NET Verhalten richtig, die unbehandelte Ausnahme sollte dazu führen, dass der worker-Prozess zu beenden. Es sollte eine neue worker-Prozess, wenn die nächste Anfrage kommt.

Wenn der session-timeout-Einstellung niedrig ist, verursacht es die gleiche Ausnahme. Dies scheint seltsam, weil von dem, was ich gelesen habe, das Berichts-Viewer sollte die ping-server zu halten, die Sitzung lebendig.

Ich habe versucht, um die Ausnahme zu fangen, aber es wird geworfen, irgendwo in den ReportViewer-Steuerelement, bevor ich wieder Zugang in die Seite laden. Der obige code wird trotzdem ausgeführt, wenn ich mit der IsPostBack, aber es hat keine Wirkung.

Ich habe versucht, mit state-server anstatt zu halten, die Sitzung in den Prozess, so dass es nicht verlieren würde, es ist session, aber das führt zu weiteren Fehlern aus dem Bericht-viewer. Es schien nicht in der Lage sein, um es zu speichern der session-Daten in der state-server.

Die Umgebung ist Windows Server 2003
.NET 4.0
Report Viewer 2010

Wo kann ich entweder den Fehler behandeln, ohne den Arbeitsprozess zu beenden, oder zu erhalten den Bericht "stateserver"?

InformationsquelleAutor Niels Ziegler | 2010-07-29

Schreibe einen Kommentar