Asp.net

ReportViewer 超時,儘管有超時設置

  • September 1, 2011

我有一個 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>

引用自:https://stackoverflow.com/questions/7272394