asp.net StreamReader - 此流不支持超时

问题描述

我对 .net 比较陌生,我不确定为什么我在使用 StreamReader 时遇到问题。最终,该项目会收到一个我写入磁盘的 CSV 文件,然后尝试使用 CsvReader 进行解析。它按预期写入磁盘,并且传递给解析器的绝对路径有效。使用来自 CsvReader 的示例代码返回一个空对象,并由返回错误“此流不支持超时”的阅读器解释。

我的索引使用ajax调用控制器

function uploadFile(file) {

    var _url = '@Url.Action("index","FileUpload")';

    var formData = new FormData();
    formData.append("file",file);

    $.ajax({
        url: _url,data: formData,processData: false,contentType: false,type: "POST",success: function (data) {
            $('.fileStatus').text("File Uploaded");
            showFile(file);
        },error: function (jqXHR) {
            $('.fileStatus').text("File Error");
        }
    });
}

FileUploadController 将此文件写入磁盘,然后将绝对路径传递给 CSV 解析器方法以供其读取。

[HttpPost("FileUpload")]
public async Task<IActionResult> Index(IFormFile file)
{
    if (file != null)
    {
        var filename = this.EnsureCorrectFilename(file.FileName);

        var csvFile = this.GetPathAndFilename(filename);

        using (var stream = new FileStream(csvFile,FileMode.Create))
        {
            file.CopyTo(stream);
        }

        var csv = csvController.ReadInCSV(csvFile);
    }

    return Ok();
}

这里的读者出错了。我不确定为什么“reader.BaseStream.ReadTimeout”会抛出“System.InvalidOperationException”类型的异常。消息“此流不支持超时。”

public IEnumerable<dynamic> ReadInCSV(string absolutePath)
{
    using (var reader = new StreamReader(absolutePath))
    using (var csvReader = new CsvReader(reader,CultureInfo.InvariantCulture))
    {
        csvReader.Configuration.RegisterClassMap<InvoiceMap>();
        var records = csvReader.GetRecords<InvoiceModel>().ToArray();

        return records;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...