我的应用程序正在使用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.]
我一直在研究这个问题,我找到的最好的资源是以下2页。
Reporting Services Report Timeout
第一个链接很有意思,但没有给出实际的答案,我在查询字符串中没有看到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.axd不是必需的。”
这是有道理的,因为Reserved.ReportViewerWebControl.axd实际上并不作为文件存在。
我如何使这项工作?
修改
我正在使用ReportViewer的v11:
<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>
答案 0 :(得分:2)
您尚未说明您使用的是哪个版本的报告查看器。较新的版本需要asp.net scriptmanager ...
如果您的版本需要脚本管理器,请尝试更改超时属性AsyncPostBackTimeout。