I have an ASP.NET app that exposes a Microsoft ReportViewer (actually an MVC3 app with one WebForm hosting the ReportViewer). When running large reports, a timeout occurs causing the request to stop and a blank page to show in place of a report. Yet the following timeout parameters are set programmatically:
Viewer.ServerReport.Timeout = Configuration.ReportViewerTimeout;
ScriptManager.AsyncPostBackTimeout = Configuration.ReportViewerAjaxTimeout;
Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out.
[Break On This Error] this._endPostBack(this._cr...anagerTimeoutError(), sender, null);
<httpRuntime maxRequestLength="1024000" executionTimeout="999999" />
Turns out that the answer is: There is actually nothing missing!
As it happens, the ScriptManager's timeout value is not persisted in ViewState (unlike the ReportViewer's timeout value) and the code was only setting it once inside a
if (!PostBack) block. Fixed by setting the ScriptManager's AsyncPostBackTimeout property at each request (even postbacks). An alternative is to set it to a fixed value using the Visual Studio WebForm designer.