ASP.Net ReportViewer вызывает мерцание в Firefox - PullRequest
0 голосов
/ 02 апреля 2009

В HTML-коде, сгенерированном ReportViewer, есть следующая строка кода (я пытался сделать ее более читабельной, удалив лишнюю информацию)

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, он делает запрос GET, который возвращает следующий HTML:

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

По сути, это становится рекурсивной функцией, и поскольку KeepAliveMethodReportViewer1TouchSession0 вызывает установленное время ожидания с отрицательным значением времени ожидания, в Firefox оно вызывается немедленно, примерно через 10 секунд Firebug регистрирует более 150 запросов GET за одну минуту, регистрируется более 700 запросов. Это заставляет кнопку Stop Firefox и курсор мерцать как сумасшедший.

Если кто-то знает, как отрегулировать время ожидания запроса keepalive, чтобы оно было нормальным, я был бы очень признателен за вашу помощь.

Ответы [ 3 ]

1 голос
/ 25 мая 2011

У меня была похожая проблема, и когда я сделал тайм-аут сеанса около 10000, он перестал мигать на Firefox и Chrome. Я не уверен почему, но это решило эту проблему. Я новичок в сообществе ASP.Net, поэтому мне хотелось бы знать, как соотносится сокращение времени ожидания сеанса (ранее я держал его на 120000) и мерцание средства просмотра отчетов в Firefox, когда приложение работает на IIS (нет проблем с сервером разработки).

1 голос
/ 19 августа 2011

Я знаю, что этой ветке пару лет, но у меня была похожая проблема сегодня, и я нашел решение здесь:

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

Это что-то вроде хака, который создает пользовательский элемент управления, наследуемый от ReportViewer, который заменяет неисправный JavaScript путем переопределения Render() метода.

0 голосов
/ 03 июня 2009

Не уверен ... но стоит отметить, что этот элемент управления предоставляет уязвимость межсайтового скриптинга через параметр TimerMethod. Не слишком много документации по этому вопросу, но будьте осторожны. :)

...