Ром, ты делаешь это неправильно. Вы не хотите записывать файлы на диск, чтобы IIS мог их обслуживать. Это добавляет последствия для безопасности, а также увеличивает сложность. Все, что вам действительно нужно сделать, это сохранить CSV непосредственно в поток ответов.
Вот сценарий: пользователь хочет скачать CSV. Пользователь отправляет форму с подробной информацией о CSV, который они хотят. Вы готовите CSV, затем предоставляете пользователю URL-адрес страницы ASPX, который можно использовать для создания файла CSV и записи его в поток ответов. Пользователь нажимает на ссылку. Страница aspx пуста; На странице кода вы просто записываете CSV в поток ответов и завершаете его.
Вы можете добавить следующее к (я считаю, это правильно) Загрузка событие:
string attachment = "attachment; filename=MyCsvLol.csv";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "text/csv";
HttpContext.Current.Response.AddHeader("Pragma", "public");
var sb = new StringBuilder();
foreach(var line in DataToExportToCSV)
sb.AppendLine(TransformDataLineIntoCsv(line));
HttpContext.Current.Response.Write(sb.ToString());
запись в код потока ответов отсюда .