增加ReportViewer和处理程序的超时时间
本文关键字:超时 时间 程序 处理 ReportViewer 增加 | 更新日期: 2023-09-27 18:17:17
我的应用程序正在使用ReportViewer WebControl。我没有使用SSRS -只是ReportViewer绑定到一个sql数据源。
当我运行一个非常大的报告时,报告将在浏览器中呈现得很好,但是当我单击工具栏控件导出为PDF或XLS时,我在大约2分钟后得到一个Request timed out
错误页面:
Server Error in '/' Application.
Request timed out.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: Request timed out.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[HttpException (0x80004005): Request timed out.]
我已经调查了一段时间,我找到的最好的资源是以下两页。
http://www.developmentnow.com/g/115_2005_5_0_0_532058/How-to-set-Report-manager-PDF-export-timeout.htmReporting Services报告超时时间
第一个链接很有趣,但是没有给出实际的答案,而且我在查询字符串中没有看到Timeout参数(见下文)。
第二个也没有真正的帮助。首先,我没有使用报表服务器,因此无法按照它所描述的方式为单个报表设置超时。其次,我宁愿不增加整个应用程序的超时——毕竟它的存在是有原因的。我宁愿只为Reserved.ReportViewerWebControl.axd
增加它,因为这是导致错误的路径-当您将报告导出为pdf等时,它会打开指向Reserved.ReportViewerWebControl.axd
的直接链接。在我的例子中,这是:
Reserved.ReportViewerWebControl.axd?Culture=2057&CultureOverrides=True&UICulture=2057&UICultureOverrides=True&ReportStack=1&ControlID=cf991107384446f8859b148bc815745b&Mode=true&OpType=Export&FileName=InvoicesReport&ContentDisposition=OnlyHtmlInline&Format=PDF
所以我决定在web.config中改变这个特定处理程序的executionTimeout:
<location path="Reserved.ReportViewerWebControl.axd"> <system.web> <!-- Set execution timeout to 10 minutes, default is 110 seconds --> <httpRuntime executionTimeout="600"/> </system.web> </location>
但是这给了我"Location元素未使用。在Reserved.ReportViewerWebControl.axd中找不到项目项。路径C: '…Reserved.ReportViewerWebControl。
这是有意义的,因为Reserved.ReportViewerWebControl.axd实际上并不作为文件存在。
我如何使它工作?
编辑
我使用的是v11的ReportViewer:
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
validate="false" />
</httpHandlers>
您没有说明正在使用哪个版本的reportviewer。较新的版本需要asp.net scriptmanager…
如果你的版本需要一个scriptmanager,请尝试修改超时属性AsyncPostBackTimeout