Я обнаружил, что делает множество различных версий этого, что записывает фактический файл на сервер и затем отправляет через Response.TransmitFile, чтобы быть намного более устойчивым.
Таким образом, у вас также есть дополнительный шаг отладки.Вы можете использовать его на данный момент, проверив файлы на сервере вручную, чтобы определить, не являются ли они пустыми, и, возможно, выявить другие проблемы.