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

VS2013调试ASP.NET时ClosedXML读取Excel报初始化错误如何解决

根因说明

这个报错的核心原因是你在web.config中开启了身份模拟,Visual Studio 2013调试时运行的Web服务进程,使用模拟身份访问WPF相关的ETW追踪注册表项时权限不足,和Excel文件本身的访问权限无关。

解决方案

你可以按优先级选择以下任意一种方案解决:

  • 方案1:使用内存流加载Excel(最稳妥无侵入)
    修改ReadExcel方法中加载Excel的逻辑,先将文件读取到内存流再传入ClosedXML,绕开底层OpenXML组件访问注册表的逻辑,代码修改如下:
private DataTable ReadExcel(string filePath)
{
    try
    {
        DataTable dt = new DataTable();
        // 新增流加载逻辑
        using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            using (var ms = new MemoryStream())
            {
                fs.CopyTo(ms);
                ms.Position = 0;
                IXLWorkbook workBook = new XLWorkbook(ms);
                IXLWorksheet workSheet = workBook.Worksheet(1);
                bool firstRow = true;
                foreach (IXLRow row in workSheet.Rows())
                {
                    if (firstRow)
                    {
                        foreach (IXLCell cell in row.Cells())
                        {
                            dt.Columns.Add(cell.Value.ToString());
                        }
                        firstRow = false;
                    }
                    else
                    {
                        dt.Rows.Add();
                        int i = 0;
                        foreach (IXLCell cell in row.Cells())
                        {
                            dt.Rows[dt.Rows.Count - 1][i] = cell.Value.ToString();
                            i++;
                        }
                    }
                }
                return dt;
            }
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
  • 方案2:临时禁用ETW追踪(仅调试用)
    在web.config的<appSettings>节点下新增如下配置,跳过ETW的注册表检查:
<add key="EnableEventTrace" value="false" />

调试正常后可删除该配置,不影响线上IIS运行逻辑。

  • 方案3:修正注册表权限
    打开注册表编辑器,依次找到以下两个路径:
    • 32位系统:HKEY_LOCAL_MACHINE\Software\Microsoft\Avalon.Graphics
    • 64位系统:除上述路径外,还要找HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Avalon.Graphics
      右键点击项→权限→添加你在identity节点配置的模拟用户,授予【读取】权限后重启VS即可。
  • 方案4:使用管理员权限启动VS
    每次调试前右键点击Visual Studio 2013图标,选择【以管理员身份运行】,提升调试进程的系统权限即可规避权限不足问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:02