Вы можете ответить на запрос страницы файлом:
Response.AddHeader("Content-Disposition",
"attachment; filename=yourfile.csv");
Response.ContentType = "text/plain";
Обязательно отключите буферизацию, чтобы IIS мог начать отправку первой части файла во время создания второй:
Response.BufferOutput = false;
После этого вы можете начать писать файл как:
Response.Write("field1,field2,field3\r\n");
Когда файл полностью записан, завершите ответ, чтобы ASP.NET не добавлял веб-страницу в ваш файл:
Response.End();
Таким образом, вам не нужно писать файлы на своих веб-серверах, вы просто создаете файлы в памяти и отправляете их своим пользователям.
Если требуется сжатие, вы можете написать ZIP-файл таким же образом. Это хорошая бесплатная библиотека для создания ZIP-файлов.