2

在 ReportViewer 生成的 HTML 中有以下代码行,

setTimeout("frames['ctl00_templateContentPlaceholder_RptVwrTouchSession0'].location.replace('\\\/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=2649539aa5ca4b63ae81dc879a82ae33&ControlID=80797a28ba484c3e87a5a6ad5527403a&Culture=1033&UICulture=1033&ReportStack=1&OpType=SessionKeepAlive&TimerMethod=KeepAliveMethodctl00_templateContentPlaceholder_RptVwrTouchSession0&CacheSeed=' + encodeURIComponent(Date()));", 0);function KeepAliveMethodctl00_templateContentPlaceholder_RptVwrTouchSession0() {setTimeout("frames['ctl00_templateContentPlaceholder_RptVwrTouchSession0'].location.replace('\\\/Reserved.ReportViewerWebControl.axd?Mode=true&ReportID=2649539aa5ca4b63ae81dc879a82ae33&ControlID=80797a28ba484c3e87a5a6ad5527403a&Culture=1033&UICulture=1033&ReportStack=1&OpType=SessionKeepAlive&TimerMethod=KeepAliveMethodctl00_templateContentPlaceholder_RptVwrTouchSession0&CacheSeed=' + encodeURIComponent(Date()));", -64831072);}

Reserved.ReportViewerWebControl.axd调用它时,它会发出一个返回以下 HTML 的 GET 请求:

<html>
<body>
    <script type="text/javascript">parent.KeepAliveMethodReportViewer1TouchSession0();</script>
</body>
</html>

因此,实际上它变成了一个递归函数,并且因为KeepAliveMethodReportViewer1TouchSession0调用了一个带有负超时值的设置超时,在 Firefox 中它被立即调用,在大约 10 秒内,Firebug 在一分钟内记录了超过 150 个 GET 请求,记录了超过 700 个请求。

如果有人知道如何调整 keepalive 请求的超时,请提供帮助。

4

1 回答 1

0

我在 web.config 中减少了会话超时。这解决了这个问题。我不知道那是如何工作的。

于 2012-12-05T09:28:20.230 回答