Я думаю, что это происходит из-за неправильного понимания объекта ответа и / или базовой структуры HTTP-запроса.
Ваш запрос: GET /buildXLS.aspx
Ответ сервера 1: / * информация заголовка для загрузки файла * / / * данные файла * /
Ответ сервера 2: / * информация об отправителе для HTML-страницы * /
Обновление ...
/ * данные файла * /
если вы попытаетесь действовать как сервер 1, вы не сможете отправить обратно какие-либо данные в ответ, кроме самого файла (и соответствующих заголовков). если вы попытаетесь действовать как сервер 2, загружаемая страница будет обрабатываться как HTML, и вы никогда не увидите данные файла, поскольку заголовки были записаны с указанием передачи "text / html" вместо XLS. фактически, когда вы по какой-либо причине сбросили ответ, вы больше не можете писать в него.
Я вижу ситуацию, когда ваш сценарий может работать, но только в виде двух взаимодействующих страниц - страница 1 показывает сообщение о прогрессе, затем открывает новое окно, страница 2. страница 2 запускает сборку XLS и затем запускает страницу 1, чтобы скрыть сообщение о прогрессе, когда оно будет завершено. теперь у вас есть две страницы, соответствующие двум наборам заголовков, которые вы пытаетесь отправить, вместо того, чтобы пытаться отправлять как обновления HTML, так и запускать загрузку файлов в рамках одного ответа.