I was testing a fairly complex and long running report for SQL Server Reporting Services, but the results were blank when using the Report Viewer component.
Status in the ExecutionLog* views was rsSuccess in the ReportServer database.
The ReportServerService*.log showed no errors, only this:
library!ReportServer_0-1!a78!09/23/2016-11:19:31:: i INFO: RenderForNewSession('/Test report') webserver!ReportServer_0-1!a78!09/23/2016-11:21:59:: i INFO: Processed report. Report='/Test report', Stream=''
I used procdump to log exception messages from the IIS worker process with:
procdump.exe -f "" -l -e 1 w3wp.exe
Part of the result was:
[11:21:01] Exception: E0434F4D.System.Net.WebException ("The request was aborted: The request was canceled.") [11:21:01] Exception: E0434F4D.System.Net.WebException ("The request was aborted: The request was canceled.") [11:21:01] Exception: E0434F4D.Microsoft.Reporting.WebForms.ReportServerException ("The operation was canceled.") [11:21:01] Exception: E0434F4D.Microsoft.Reporting.WebForms.ReportServerException ("The operation was canceled.")
So the request was actively getting cancelled.
This definitely seemed like a timeout issue, but which timeout setting was causing the problem?
Checked the default value for ReportViewer.ServerReport.Timeout, which was 600 seconds.
Then I googled for: ReportServerException (“The operation was canceled.”)
And found a solution here: Report Viewer Control returns OperationCanceledException OnError event after 90 seconds
The solution was to modify the .aspx page with the ReportViewer control:
From:
<asp:ScriptManager ID="ScriptManager1" runat="server">
To:
<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="600">