0

在 ReportViewer 生成的 HTML 中有以下代码行(我尝试通过删除多余的信息使其更具可读性)

setTimeout("frames['ReportViewer1TouchSession0'].location.replace('/Reserved.ReportViewerWebControl.axd?...&TimerMethod=KeepAliveMethodReportViewer1TouchSession0...", 0);

function KeepAliveMethodReportViewer1TouchSession0() {   
setTimeout("frames['ReportViewer1TouchSession0'].location.replace('/Reserved.ReportViewerWebControl.axd?...TimerMethod=KeepAliveMethodReportViewer1TouchSession0....", -1703027296);
}

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

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

所以实际上它变成了一个递归函数,并且因为 KeepAliveMethodReportViewer1TouchSession0 调用了一个带有负超时值的设置超时,在 Firefox 中它被立即调用,在大约 10 秒内 Firebug 在一分钟内记录了超过 150 个 GET 请求,记录了超过 700 个请求。这会导致 Firefox 的停止按钮和光标疯狂地闪烁。

如果有人知道如何调整keepalive请求的超时时间,那么我将非常感谢您的帮助。

4

3 回答 3

1

I know this thread is couple of years old, but I had a similar problem today and found a solution here:

http://www.google.com/support/forum/p/Chrome/thread?tid=331a0a766d6da660&hl=en

It's a bit of a hack that creates a custom control inheriting from ReportViewer which replaces the offending JavaScript by overriding the Render() method.

于 2011-08-19T04:41:36.040 回答
1

我有类似的问题,当我将会话超时设置为 10000 左右时,它在 Firefox 和 chrome 上停止闪烁。我不知道为什么,但它解决了这个问题。我是 ASP.Net 社区的新手,所以我想知道减少会话超时(以前我将其保持在 120000)和当应用程序在 IIS 上时报告查看器在 Firefox 上闪烁之间的关系(开发服务器没有问题)。

于 2011-05-25T14:03:18.047 回答
0

不确定...但值得注意的是,此控件通过 TimerMethod 参数暴露了跨站点脚本漏洞。关于这个问题的文档不多,但要小心。:)

于 2009-06-02T21:44:27.737 回答