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ではすぐに呼び出されます。Firebugは1分間に150を超えるGETリクエストをログに記録し、700を超えるリクエストがログに記録されます。これにより、Firefoxの停止ボタンとカーソルが狂ったようにちらつきます。

キープアライブ要求のタイムアウトを調整する方法を誰かが知っているので、それが正気であるなら、私はあなたの助けを大いに感謝します。

4

3 に答える 3

1

このスレッドが数年前のものであることは知っていますが、今日も同様の問題があり、ここで解決策を見つけました:

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

メソッドReportViewerをオーバーライドすることで、問題のある JavaScript を置き換えるカスタム コントロールを継承して作成するのは、ちょっとしたハックです。Render()

于 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 に答える