我正在try 编写一个方法,该方法将读取ZIP文件中的所有CSV文件,该文件作为IFormFile
到HttpRequest
提交.
我使用CsvHelper
来读取使用以下代码的文件内容:
using (var archiveStream = zip.OpenReadStream())
{
using (var archive = new ZipArchive(archiveStream))
{
foreach (var entry in archive.Entries)
{
using (var entryStream = entry.Open())
{
using (TextReader reader = new StreamReader(entryStream))
{
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
using (var dataReader = new CsvDataReader(csv))
{
while (dataReader.Read())
{
object[] values = new object[dataReader.FieldCount];
dataReader.GetValues(values);
// do stuff with object[]
}
}
}
}
}
}
}
}
然而,在foreach
的第二次迭代中,当它达到var dataReader = new CsvDataReader(csv)
时,我得到了System.ObjectDisposedException: 'Cannot access a closed file.'
.
我不清楚它认为是哪个"文件"被处理了.如何在整个循环中保持该流的打开状态?
这是在从ApiController
emits 的Task<>
内部运行的.