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

.NET 7 MVC项目访问wwwroot文件夹报错求助

问题原因&解决方案

核心原因

  • 驱动不兼容:Microsoft.Jet.OLEDB.4.0是32位旧驱动,.NET7默认运行64位进程,64位程序无法加载32位驱动,即便路径正确也会触发“路径无效”报错。
  • 路径解析错误:若使用相对路径访问wwwroot下的文件,应用运行时的工作目录可能和文件管理器中的实际路径不一致,导致无法定位文件。
  • 连接字符串配置错误:你使用的text扩展属性是用于处理CSV等文本文件的,并非Excel文件的正确配置,属性错误也会引发路径无效的提示。

解决方案

1. 替换为兼容的ACE驱动

弃用Jet驱动,改用Microsoft.ACE.OLEDB.12.0——它支持32/64位双环境,同时兼容xls和xlsx格式。需要先安装对应位数的Microsoft Access Database Engine可再发行组件包(若已安装32位Office,需选择兼容模式安装,或卸载32位Office后安装64位驱动)。

2. 使用绝对路径访问文件

避免用相对路径,通过.NET7的IWebHostEnvironment获取wwwroot的绝对路径:

private readonly IWebHostEnvironment _webHostEnv;

// 构造函数注入IWebHostEnvironment
public YourServiceOrController(IWebHostEnvironment webHostEnv)
{
    _webHostEnv = webHostEnv;
}

// 拼接文件绝对路径
var excelFilePath = Path.Combine(_webHostEnv.WebRootPath, "your-excel-file.xlsx");

同时要确保应用程序池的身份具备该文件的读取权限。

3. 修正Excel专属的连接字符串

  • 针对.xls格式(Excel 97-2003):
Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'
  • 针对.xlsx格式(Excel 2007及以后):
Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;'

添加IMEX=1可强制将混合数据类型的列按文本读取,避免数据丢失。

4. 可选:切换为32位运行(不推荐生产环境)

若必须使用Jet驱动,可在Visual Studio中调整项目平台目标:右键项目→属性→生成→平台目标选择x86,重新编译运行。但此方式会限制应用只能在32位环境运行,生产环境不建议采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:37:21