2011-09-01 185 views
16

我有一個ASP.NET應用程序公開Microsoft ReportViewer(實際上是一個MVC3應用程序與一個WebForm承載ReportViewer)。運行大型報告時,會發生超時,導致請求停止並顯示一個空白頁來代替報告。然而,以編程方式設置以下超時參數:ReportViewer超時儘管超時設置

Viewer.ServerReport.Timeout = Configuration.ReportViewerTimeout; 
ScriptManager.AsyncPostBackTimeout = Configuration.ReportViewerAjaxTimeout; 

各個值爲-1和0,根據文檔將其解釋爲不超時。我也嘗試了很大的價值,但沒有任何區別。

後約一分鐘左右的報告,等待加載(「加載」消息框),我得到一個空白報表,我看到這在我的螢火蟲控制檯窗口:

中止

Sys.WebForms.PageRequestManagerTimeoutException:服務器請求超時。

[Break On This Error] this._endPostBack(this._cr ... anagerTimeoutError(),sender,null);

我也嘗試添加這對我的web.config:

<httpRuntime maxRequestLength="1024000" executionTimeout="999999" /> 

和IIS>我的網站>高級設置>連接限制我將「連接超時(秒)」到1200。所有這些都沒有改變。

有誰知道我可能會錯過什麼?

回答

11

原來,答案是:其實沒有什麼不見了!

碰巧,ScriptManager的超時值沒有保留在ViewState中(與ReportViewer的超時值不同),代碼只在if (!PostBack)塊中設置一次。通過在每個請求中設置ScriptManager的AsyncPostBackTimeout屬性(甚至回發)來修復。另一種方法是使用Visual Studio WebForm設計器將其設置爲固定值。

6

增加兩個上面提到的伎倆,我的配置設置。

在web.config的網站設置executionTimeout = 「10800」:

<httpRuntime maxRequestLength="2147483647" executionTimeout = "10800"/> 

在設定的Site.Master = AsyncPostBackTimeout 「56000」:

<asp:ToolkitScriptManager ID="smMaster" runat="server" AsyncPostBackTimeout="56000" />