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ではすぐに呼び出されます。Firebugは1分間に150を超えるGETリクエストをログに記録し、700を超えるリクエストがログに記録されます。これにより、Firefoxの停止ボタンとカーソルが狂ったようにちらつきます。
キープアライブ要求のタイムアウトを調整する方法を誰かが知っているので、それが正気であるなら、私はあなたの助けを大いに感謝します。