ReportViewer 超時,儘管有超時設置
我有一個 ASP.NET 應用程序,它公開了一個 Microsoft ReportViewer(實際上是一個 MVC3 應用程序,帶有一個託管 ReportViewer 的 WebForm)。執行大型報告時,會發生超時,導致請求停止,並顯示空白頁代替報告。然而,以下超時參數是以程式方式設置的:
Viewer.ServerReport.Timeout = Configuration.ReportViewerTimeout; ScriptManager.AsyncPostBackTimeout = Configuration.ReportViewerAjaxTimeout;各自的值是 -1 和 0,根據文件被解釋為沒有超時。我也嘗試了大值,它沒有任何區別。
在等待報告載入大約一分鐘後(“正在載入”消息框),我得到一個空白報告,我在 Firebug 控制台視窗中看到了這個:
中止
Sys.WebForms.PageRequestManagerTimeoutException:伺服器請求超時。
[中斷此錯誤] this._endPostBack(this._cr…anagerTimeoutError(), sender, null);
我還嘗試將其添加到我的 web.config 中:
<httpRuntime maxRequestLength="1024000" executionTimeout="999999" />在 IIS > 我的站點 > 高級設置 > 連接限制中,我將“連接超時(秒)”設置為 1200。所有這些都沒有區別。
有誰知道我可能會錯過什麼?
原來答案是:其實什麼都沒有!
if (!PostBack)碰巧的是,ScriptManager 的超時值不會保留在 ViewState 中(與 ReportViewer 的超時值不同),並且程式碼僅在塊內設置一次。通過在每個請求(甚至回發)處設置 ScriptManager 的 AsyncPostBackTimeout 屬性來修復。另一種方法是使用 Visual Studio WebForm 設計器將其設置為固定值。
在腳本管理器中設置 AsyncPostBackTimeOut="" 值
<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeOut="56000" > </asp:ScriptManager>有關更多詳細資訊 <http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.asyncpostbacktimeout.aspx>