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 が 1 分間に 150 を超える GET 要求をログに記録し、700 を超える要求がログに記録されます。

キープアライブ リクエストのタイムアウトを調整する方法を誰かが知っている場合は、助けてください。

4

1 に答える 1

0

web.configのセッションタイムアウトを減らしました。これで問題は解決しました。それがどのように機能するかはまだわかりません。

于 2012-12-05T09:28:20.230 に答える