Использование updateprogress при создании файла с Response.write в ASP.NET - PullRequest
4 голосов
/ 16 июля 2009

Я создаю файл Excel с Response.write в моем файле C #, и создание файла занимает 1-2 минуты. Я хотел бы использовать UpdateProgress, чтобы указать, что происходит генерация файла. Но когда я использую UpdateProgress, файл не генерируется.

Пожалуйста, дайте мне знать, если я что-то здесь упускаю.

Ответы [ 2 ]

3 голосов
/ 28 июля 2009

Я думаю, что это происходит из-за неправильного понимания объекта ответа и / или базовой структуры HTTP-запроса.

Ваш запрос: GET /buildXLS.aspx

Ответ сервера 1: / * информация заголовка для загрузки файла * / / * данные файла * /

Ответ сервера 2: / * информация об отправителе для HTML-страницы * /

Обновление ...
/ * данные файла * /

если вы попытаетесь действовать как сервер 1, вы не сможете отправить обратно какие-либо данные в ответ, кроме самого файла (и соответствующих заголовков). если вы попытаетесь действовать как сервер 2, загружаемая страница будет обрабатываться как HTML, и вы никогда не увидите данные файла, поскольку заголовки были записаны с указанием передачи "text / html" вместо XLS. фактически, когда вы по какой-либо причине сбросили ответ, вы больше не можете писать в него.

Я вижу ситуацию, когда ваш сценарий может работать, но только в виде двух взаимодействующих страниц - страница 1 показывает сообщение о прогрессе, затем открывает новое окно, страница 2. страница 2 запускает сборку XLS и затем запускает страницу 1, чтобы скрыть сообщение о прогрессе, когда оно будет завершено. теперь у вас есть две страницы, соответствующие двум наборам заголовков, которые вы пытаетесь отправить, вместо того, чтобы пытаться отправлять как обновления HTML, так и запускать загрузку файлов в рамках одного ответа.

0 голосов
/ 16 июля 2009

См. Обзор элемента управления UpdateProgress :

Элемент управления UpdateProgress обеспечивает информация о статусе частичной страницы обновления в элементах управления UpdatePanel.

Вы частично обновляете страницу в UpdatePanel?

...