GemBox останавливает работу остальной части внутреннего кода для работы в модуле DNN - PullRequest
0 голосов
/ 22 мая 2018

У нас есть модуль DNN, который будет извлекать прайс-лист из нашей системы ERP, как только вы выберете формат, в который вы хотите экспортировать его.Мы используем GemBox для генерации файла Excel, CSV или PDF, но мы поняли, что остальная часть кода перестает работать, как только он начинает генерировать файл для загрузки.Это означает, что PostBack останавливается.

Мы используем последний раздел кода из GemBox, который не будет прерывать поток: https://gemboxsoftware.deskpro.com/kb/articles/threadabortexception-in-asp-net-application

Мы убедились, что частичный рендеринг отключен в DotNetNuke.

Затем мы изменили внутренний код, чтобы получить отдельный файл .aspx (не файл .ascx) после запуска кода для создания файла Exel, CSV или PDF.Это предотвращает остановку работы PostBack.Теперь будет сгенерирован файл загрузки, но я пытаюсь остановить отображение значка загрузки.Я использовал RegisterStartupScript, который идет к функции JQuery, чтобы остановить его, но он никогда не запускает этот RegisterStartupScript, даже если он находится в отдельном файле, код которого включен в раздел PageLoad, и код проходит через него при отладке.(Значит ли это, что вы не можете загружать отдельные страницы в модуль DNN, отличный от файла view.ascx?)

Похоже, что Front-End никогда не обновляется после загрузки этого файла загрузки.Может ли это быть ответ заголовка HTTP, который нарушает остальную часть кода?

Как я могу сбросить / перезагрузить страницу модуля DNN без перезагрузки всей веб-страницы?

Означает ли это, что у меня будетнаписать функцию Ajax с какой-то функцией Web Worker?Я просто хотел бы перезагрузить модуль DNN, как только в браузере появится файл загрузки.

1 Ответ

0 голосов
/ 23 мая 2018

Когда вы генерируете файл и отвечаете пользователю с этим файлом для загрузки.Никакие другие действия или ответы не могут быть обработаны браузером, такими как сценарий запуска реестра или иным образомНО вы можете отправить обратно cookie.

Таким образом, один из способов справиться с этим - вызвать некоторый код на стороне клиента, когда они нажмут, чтобы загрузить и показать ваш индикатор прогресса, а затем проверить наличие или нет, куки в зависимости от того, как вы реализуете.Когда это изменится, вы можете скрыть прогресс.

Решение немного сложное, но этот ответ показывает очень подробную информацию о том, как это сделать:

...