У меня есть интерфейс отчетов ASP.NET, который отображает несколько значений, возвращаемых из серверной части SQL Server. После входа страница браузера никогда не перезагружается, но несколько областей экрана обновляются по таймеру с помощью вызовов AJAX.
Моя проблема заключается в том, что в областях экрана периодически отображаются значения, поступающие от предыдущих вызовов AJAX. Я тщательно и интенсивно исследовал проблему в течение нескольких дней, и я не смог точно определить, что вызывает ее, или как полностью ее преодолеть. В настоящее время неправильные значения очень редки (скажем, 3 из 50 000), но я не должен получить ничего! Вот некоторые подробности о настройке:
- таймер обновления экрана запускается каждые 30 секунд для обновления всех областей экрана
- между обновлениями области экрана 1,5 лага
- значения, используемые для определения того, какой хранимый процесс SQL должен запускаться для получения правильных значений из базы данных для каждой области экрана, правильно передаются в интерфейс ASP.NET - я знаю со 100% -ной уверенностью, какой хранимый процесс нужно запустить
- сохраненный процесс возвращает свои значения в SQLDataReader
- это считыватель, который иногда выдает значения, которые кажутся "буферизованными" из предыдущих взаимодействий AJAX, т.е. я запускаю правильный сохраненный процесс с правильными переменными, но возвращаемые значения не те, что я получаю, если я запускаю это точно такая же команда в интерфейсе SQL-запроса - это результаты предыдущего вызова
- Соединение SQL, команда и читатель создаются и создаются заново для каждого взаимодействия и корректно удаляются после использования через интерфейс IDisposable
- Я поменял читателя на набор данных без различий в результатах
- мои вызовы AJAX являются синхронными (async = false), поэтому каждый из них должен завершаться до запуска следующего, но у меня также есть задержка в 1,5 секунды между обновлениями области экрана и 30 секунд между циклами, поэтому они не должны выполняться друг в друга в любом случае.
Что расстраивает, так это то, что читатель выполняет инструкцию SQL без исключения, но, по-видимому, возвращает результаты предыдущего взаимодействия - и то очень редко, но один неверный результат - это слишком много.
Я вообще не использую управление состоянием ASP.NET - отключен в web.config.
Чего мне не хватает?