Session Expiration and Lost Images on Report
My Asp.net 2.0 application uses the report viewer control to run server reports on Reporting Services 2005. My application runs fine in "InProc" mode but when I started using "SQLServer" mode for SessionState with cookieless="false", pages with server reports start failing
For instance, report A has a chart in each row of a table. Each row can drill-through to Report B. When the user clicks Report A, Report B runs and the text shows but where the images are supposed to be, the browser shows the standard X place holder. Each failed image produces an entry in the Log:
Event Type: Warning
Event Source: ASP.NET 2.0.50727.0
Event Category: (3)
Event ID: 1309
Date: 9/22/2006
Time: 5:55:19 PM
User: N/A
Computer: BLADE3
Description:
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 9/22/2006 5:55:19 PM
Event time (UTC): 9/22/2006 10:55:19 PM
Event ID: 72fc3df2b5994f15b3a342c9eac5c3f6
Event sequence: 29
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/Root/v7-18-128034392915000000
Trust level: Full
Application Virtual Path: /v7
Application Path: Z:\websites\v7\
Machine name: BLADE3
Process information:
Process ID: 2764
Process name: aspnet_wp.exe
Account name:
Exception information:
Exception type: ReportServerException
Exception message: The stream cannot be found. The stream identifier that is provided to an operation cannot be located in the report server database. (rsStreamNotFound)
Thread information:
Thread ID: 14
Thread account name:
Is impersonating: False
Stack trace: at Microsoft.Reporting.WebForms.ServerReport.RenderStream(String format, String streamId, String deviceInfo, String& mimeType, String& encoding)
at Microsoft.Reporting.WebForms.ServerReportControlSource.GetStreamImage(String streamID, String deviceInfo, String& mimeType)
at Microsoft.Reporting.WebForms.ReportImageOperation.GetStreamImage(String streamID, HttpResponse response)
at Microsoft.Reporting.WebForms.ReportImageOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response)
at Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Now when the user clicks the back button on the Report Server control, he gets this message:
Back call without drillthrough report
Turning "InProc" back on fixes thisbut our application is schedule to roll out on a farm.
Based on the entries in the group I have:
- Made sure my computer name does not have a _ in it.
- Made sure my machine keys are the same on the servers of the farm
- Installed the correct ASPState database on SQL 2005 using the install utility
- Tweaked "AsyncRendering" on the control
Turning "SQLState" on again and using "cookieless="true" brings up the page with the report parameters prompting me but once the user clicks "View Report", I get the following error:
ASP.NET session has expired
Description:An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details:Microsoft.Reporting.WebForms.AspNetSessionExpiredException: ASP.NET session has expired
When clearly it has not because my page/application on which the Report Viewer is located would have redirected the user to log on again.
CorkChop

