尽管有超时设置,ReportViewer仍会超时



我有一个ASP。NET应用程序,它公开了一个Microsoft ReportViewer(实际上是一个带有一个WebForm托管ReportViewer的mvc应用程序)。当运行大型报告时,会发生超时,导致请求停止,并在报告的位置显示空白页。然而,以下超时参数是通过编程方式设置的:

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

各自的值是-1和0,根据文档,它们被解释为没有超时。我也试过大的值,没有什么区别。

等待报告加载大约一分钟后("Loading")消息框),我得到一个空白报告,我在我的Firebug控制台窗口中看到:

流产

Sys.WebForms。PageRequestManagerTimeoutException:服务器请求超时。

[Break On This Error] This . _endpostback (This ._cr…anagerTimeoutError(), sender, null);

我也试着把这个添加到我的web.config:

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

在IIS>我的网站>高级设置>连接限制我设置了"连接超时(秒)";到1200年。这一切都无济于事。

有人知道我可能错过了什么吗?

设置脚本管理器中的AsyncPostBackTimeOut="值

   <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeOut="56000" >
</asp:ScriptManager>

查看更多细节http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.asyncpostbacktimeout.aspx

事实证明,答案是:实际上什么都没有丢失!

碰巧的是,ScriptManager的超时值没有保存在ViewState中(不像ReportViewer的超时值),代码只在if (!PostBack)块中设置了一次。通过在每个请求(甚至回发)中设置ScriptManager的AsyncPostBackTimeout属性来修复。另一种方法是使用Visual Studio WebForm设计器将其设置为固定值。

添加上面提到的两个配置设置对我来说很有效。

在网上。设置executionTimeout = "10800":

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

在站点中。Master set AsyncPostBackTimeout="56000":

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

我们遇到了完全相同的问题,除了将ScriptManager AsyncPostBackTimeout从默认的90秒更改为更大的值,例如600(10分钟),我们还必须将Amazon ELB负载平衡器设置从1分钟更改为10分钟。

相关内容

  • 没有找到相关文章

最新更新