Почему я получаю исключение Sys.WebForms.PageRequestManagerServerErrorException: запрос был прерван: запрос был отменен? - PullRequest
0 голосов
/ 07 мая 2020

Итак, я делаю запрос SQL, который занимает до 10 минут для получения около 20К элементов данных. Само по себе это не вызывает проблем, поскольку я могу установить точку останова и просмотреть полученную информацию и отобразить ее в DataGrid, и никаких ошибок не возникает .... очевидно.

Однако на отображаемом веб-сайте я вижу в этой DataGrid нет элементов, и когда я go перехожу в консоль инструмента разработчика, я вижу

Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: запрос был прерван: запрос был отменен.

Я искал в Интернете ответ по поводу этой ошибки, и я заметил, что это может быть тайм-аут консультации, однако я могу видеть данные после их получения, поэтому больше похоже на проблему с компонентом DataGrid. Любая помощь?

1 Ответ

0 голосов
/ 07 мая 2020

Итак, я делаю SQL запрос, который занимает до 10 минут, чтобы получить около 20К элементов данных. Само по себе это не проблема

Это проблема сама по себе. Вероятно, Сервер разорвет соединение через 0,5-5 минут. И по опыту, это также бесполезный объем данных для извлечения.

Ни один человек не сможет обработать 20000 записей каким-либо значимым образом. Вы должны применить дополнительную фильтрацию, прежде чем у вас появится возможность показать это пользователю. Если пользователь может обработать 200 записей, это будет 1% от того, что вы получили. И это, вероятно, будет меньше - я предполагаю, может быть, 20.

Очень распространенная ошибка новичков - получить тонну из БД, а затем выполнить фильтрацию в коде. Thgat действительно просто тратит ОЗУ, циклы ЦП и пропускную способность сети на то, с чем сервер БД был лучше с самого начала. Это еще хуже для веб-серверов, которым действительно не хватает памяти или циклов ЦП.

Делайте столько же фильтрации, упорядочивания, разбивки на страницы и даже обработки в самом запросе.

...