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

.Net 6使用System.Data.OleDb操作Excel在Win2016部署报MDAC错误

.NET 6 环境下 OleDb 操作 Excel 报 MDAC 缺失问题修复方案

问题根因

该报错并非系统真的缺失MDAC组件:Windows Server 2008及以上版本系统已经内置了MDAC的升级替代组件Windows DAC 6.0+,版本远高于提示要求的2.6版本。
出现该问题的核心原因有三点:

  1. 6.0.0版本的System.Data.OleDb独立Nuget包存在已知兼容bug,在Windows Server 2016环境下无法正确识别系统内置的DAC组件路径,和.NET Framework 4.6直接依赖系统组件的实现逻辑存在差异。
  2. Windows Server 2016作为服务器系统默认未开启桌面体验相关组件,OLE DB调用依赖的部分COM类库未激活;.NET Framework运行时安装时会自动触发相关依赖激活,.NET 6独立运行时无该逻辑。
  3. 额外安装的mdac28sdk.msi是适用于老版本Windows系统的2.8版本SDK,版本低于系统内置的DAC组件,反而会打乱系统组件的注册表配置。

修复步骤

按以下顺序操作即可解决问题:

  • 首先卸载服务器上安装的mdac28sdk.msi,避免旧版本组件干扰系统配置。
  • 确认已安装的Access Database Engine 2016为32位版本:32位程序只能调用32位的ACE OLEDB驱动,若之前安装的是64位版本请卸载后重装32位版本;如果安装时提示和现有Office版本冲突,可执行命令AccessDatabaseEngine2016.exe /quiet /passive 完成静默强制安装。
  • 将项目引用的System.Data.OleDbNuget包从6.0.0升级到6.0.25及以上的稳定服务版本,该版本修复了低版本在服务器系统下的组件路径检测逻辑bug,无需修改业务代码。
  • 调整项目生成配置:不要使用“首选32位”的模糊配置,直接将平台目标明确设置为x86;如果是IIS部署,还需要打开对应应用程序池的高级设置,将“启用32位应用程序”选项设置为True,避免程序被自动以64位模式加载。
  • 如果上述操作完成后仍报错,打开服务器管理器-添加角色和功能,在“用户界面和基础结构”分类下找到“桌面体验”功能,安装完成后重启服务器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:15:52