Как все уже отметили, форматирование DateTime.ToString () по умолчанию содержит недопустимые символы (практически для любых настроек региона), так что
string filename = DateTime.Now.ToString() + ".csv";
генерирует «имя файла» наподобие 2/18/2011 4:26:48 PM.csv
- что неверно
если вы хотите имя на основе даты и времени, попробуйте
string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + ".csv";
чтобы получить что-то вроде 2011021804254.csv
Вы можете добавить больше форматирования, если оно не содержит ничего из следующего: \ / : * ? " < > |