You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET读取CSV文件时出现Failed to fetch错误求助

问题解决方案

一、Swagger返回"Failed to fetch"错误的解决方法

1. 修正CORS中间件顺序

Asp.Net Core中间件执行顺序直接影响功能生效,当前你的UseCors位置不符合规范,需调整到UseHttpsRedirection之后、UseAuthorization之前,同时补充允许HTTP方法和请求头,避免表单提交触发额外CORS校验:

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
// 调整位置并补充完整CORS规则
app.UseCors(builder => builder.AllowAnyOrigin()
                               .AllowAnyMethod()
                               .AllowAnyHeader());

app.UseAuthorization();

app.MapControllers();

2. 解决CSV读取的延迟加载问题

CsvReader.GetRecords<T>()是延迟执行的逻辑,当你返回Ok(dataFromFile)时,请求上下文已结束,IFormFile的流会被自动释放,导致实际枚举数据时失败。需提前将数据加载到内存:

[HttpPost("read-csv")]
public async Task<IActionResult> GetCSV([FromForm] IFormFileCollection file)
{
    // 提前将数据转为List,避免流释放后无法读取
    var dataFromFile = _csvService.ReadCSV<Values>(file[0].OpenReadStream()).ToList();

    return Ok(dataFromFile);
}

同时确保Values类的属性与CSV列名匹配(可通过[Name]特性指定映射关系),否则CsvHelper无法完成数据映射。

3. 校验launchSettings协议配置

确认launchSettings.json中applicationUrl仅使用http或https协议,比如:

"applicationUrl": "https://localhost:5001;http://localhost:5000"

访问Swagger时需使用与接口请求一致的协议,避免跨协议触发CORS错误。

二、Visual Studio崩溃后程序立即停止的原因

这是调试模式下的正常行为:通过Visual Studio调试启动应用时,程序由VS的调试器进程托管。一旦VS崩溃,调试器进程终止,被托管的应用会失去运行依赖,因此立即停止。

若需让应用在VS崩溃后继续运行,可选择:

  • 直接运行发布后的应用程序(执行dotnet publish生成的可执行文件)
  • 在终端使用dotnet run命令启动应用,而非通过VS调试启动

内容的提问来源于stack exchange,提问作者Anton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:51:57